{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 特征工程on数据集Rent Listing Inqueries\n",
    "Rental Listing Inquiries数据集是Kaggle平台上的一个分类竞赛任务，需要根据公寓的特征来预测其受欢迎程度（用户感兴趣程度分为高、中、低三类）。其中房屋的特征x共有14维，响应值y为用户对该公寓的感兴趣程度。评价标准为logloss。 数据链接：https://www.kaggle.com/c/two-sigma-connect-rental-listing-inquiries"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "import必要的包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "#用于计算feature字段的文本特征提取\n",
    "from sklearn.feature_extraction.text import  CountVectorizer\n",
    "#from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "\n",
    "#CountVectorizer为稀疏特征，特征编码结果存为稀疏矩阵xgboost处理更高效\n",
    "from scipy import sparse\n",
    "\n",
    "#对类别型特征进行编码\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "#from MeanEncoder import MeanEncoder\n",
    "\n",
    "#对地理位置通过聚类进行离散化\n",
    "from sklearn.cluster import KMeans\n",
    "from nltk.metrics import distance as distance\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "color = sns.color_palette()\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 读取训练集与测试集数据，并输出训练集头部数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>building_id</th>\n",
       "      <th>created</th>\n",
       "      <th>description</th>\n",
       "      <th>display_address</th>\n",
       "      <th>features</th>\n",
       "      <th>interest_level</th>\n",
       "      <th>latitude</th>\n",
       "      <th>listing_id</th>\n",
       "      <th>longitude</th>\n",
       "      <th>manager_id</th>\n",
       "      <th>photos</th>\n",
       "      <th>price</th>\n",
       "      <th>street_address</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>53a5b119ba8f7b61d4e010512e0dfc85</td>\n",
       "      <td>2016-06-24 07:54:24</td>\n",
       "      <td>A Brand New 3 Bedroom 1.5 bath ApartmentEnjoy ...</td>\n",
       "      <td>Metropolitan Avenue</td>\n",
       "      <td>[]</td>\n",
       "      <td>medium</td>\n",
       "      <td>40.7145</td>\n",
       "      <td>7211212</td>\n",
       "      <td>-73.9425</td>\n",
       "      <td>5ba989232d0489da1b5f2c45f6688adc</td>\n",
       "      <td>[https://photos.renthop.com/2/7211212_1ed4542e...</td>\n",
       "      <td>3000</td>\n",
       "      <td>792 Metropolitan Avenue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10000</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>c5c8a357cba207596b04d1afd1e4f130</td>\n",
       "      <td>2016-06-12 12:19:27</td>\n",
       "      <td></td>\n",
       "      <td>Columbus Avenue</td>\n",
       "      <td>[Doorman, Elevator, Fitness Center, Cats Allow...</td>\n",
       "      <td>low</td>\n",
       "      <td>40.7947</td>\n",
       "      <td>7150865</td>\n",
       "      <td>-73.9667</td>\n",
       "      <td>7533621a882f71e25173b27e3139d83d</td>\n",
       "      <td>[https://photos.renthop.com/2/7150865_be3306c5...</td>\n",
       "      <td>5465</td>\n",
       "      <td>808 Columbus Avenue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100004</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>c3ba40552e2120b0acfc3cb5730bb2aa</td>\n",
       "      <td>2016-04-17 03:26:41</td>\n",
       "      <td>Top Top West Village location, beautiful Pre-w...</td>\n",
       "      <td>W 13 Street</td>\n",
       "      <td>[Laundry In Building, Dishwasher, Hardwood Flo...</td>\n",
       "      <td>high</td>\n",
       "      <td>40.7388</td>\n",
       "      <td>6887163</td>\n",
       "      <td>-74.0018</td>\n",
       "      <td>d9039c43983f6e564b1482b273bd7b01</td>\n",
       "      <td>[https://photos.renthop.com/2/6887163_de85c427...</td>\n",
       "      <td>2850</td>\n",
       "      <td>241 W 13 Street</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100007</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>28d9ad350afeaab8027513a3e52ac8d5</td>\n",
       "      <td>2016-04-18 02:22:02</td>\n",
       "      <td>Building Amenities - Garage - Garden - fitness...</td>\n",
       "      <td>East 49th Street</td>\n",
       "      <td>[Hardwood Floors, No Fee]</td>\n",
       "      <td>low</td>\n",
       "      <td>40.7539</td>\n",
       "      <td>6888711</td>\n",
       "      <td>-73.9677</td>\n",
       "      <td>1067e078446a7897d2da493d2f741316</td>\n",
       "      <td>[https://photos.renthop.com/2/6888711_6e660cee...</td>\n",
       "      <td>3275</td>\n",
       "      <td>333 East 49th Street</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100013</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>2016-04-28 01:32:41</td>\n",
       "      <td>Beautifully renovated 3 bedroom flex 4 bedroom...</td>\n",
       "      <td>West 143rd Street</td>\n",
       "      <td>[Pre-War]</td>\n",
       "      <td>low</td>\n",
       "      <td>40.8241</td>\n",
       "      <td>6934781</td>\n",
       "      <td>-73.9493</td>\n",
       "      <td>98e13ad4b495b9613cef886d79a6291f</td>\n",
       "      <td>[https://photos.renthop.com/2/6934781_1fa4b41a...</td>\n",
       "      <td>3350</td>\n",
       "      <td>500 West 143rd Street</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        bathrooms  bedrooms                       building_id  \\\n",
       "10            1.5         3  53a5b119ba8f7b61d4e010512e0dfc85   \n",
       "10000         1.0         2  c5c8a357cba207596b04d1afd1e4f130   \n",
       "100004        1.0         1  c3ba40552e2120b0acfc3cb5730bb2aa   \n",
       "100007        1.0         1  28d9ad350afeaab8027513a3e52ac8d5   \n",
       "100013        1.0         4                                 0   \n",
       "\n",
       "                    created  \\\n",
       "10      2016-06-24 07:54:24   \n",
       "10000   2016-06-12 12:19:27   \n",
       "100004  2016-04-17 03:26:41   \n",
       "100007  2016-04-18 02:22:02   \n",
       "100013  2016-04-28 01:32:41   \n",
       "\n",
       "                                              description  \\\n",
       "10      A Brand New 3 Bedroom 1.5 bath ApartmentEnjoy ...   \n",
       "10000                                                       \n",
       "100004  Top Top West Village location, beautiful Pre-w...   \n",
       "100007  Building Amenities - Garage - Garden - fitness...   \n",
       "100013  Beautifully renovated 3 bedroom flex 4 bedroom...   \n",
       "\n",
       "            display_address  \\\n",
       "10      Metropolitan Avenue   \n",
       "10000       Columbus Avenue   \n",
       "100004          W 13 Street   \n",
       "100007     East 49th Street   \n",
       "100013    West 143rd Street   \n",
       "\n",
       "                                                 features interest_level  \\\n",
       "10                                                     []         medium   \n",
       "10000   [Doorman, Elevator, Fitness Center, Cats Allow...            low   \n",
       "100004  [Laundry In Building, Dishwasher, Hardwood Flo...           high   \n",
       "100007                          [Hardwood Floors, No Fee]            low   \n",
       "100013                                          [Pre-War]            low   \n",
       "\n",
       "        latitude  listing_id  longitude                        manager_id  \\\n",
       "10       40.7145     7211212   -73.9425  5ba989232d0489da1b5f2c45f6688adc   \n",
       "10000    40.7947     7150865   -73.9667  7533621a882f71e25173b27e3139d83d   \n",
       "100004   40.7388     6887163   -74.0018  d9039c43983f6e564b1482b273bd7b01   \n",
       "100007   40.7539     6888711   -73.9677  1067e078446a7897d2da493d2f741316   \n",
       "100013   40.8241     6934781   -73.9493  98e13ad4b495b9613cef886d79a6291f   \n",
       "\n",
       "                                                   photos  price  \\\n",
       "10      [https://photos.renthop.com/2/7211212_1ed4542e...   3000   \n",
       "10000   [https://photos.renthop.com/2/7150865_be3306c5...   5465   \n",
       "100004  [https://photos.renthop.com/2/6887163_de85c427...   2850   \n",
       "100007  [https://photos.renthop.com/2/6888711_6e660cee...   3275   \n",
       "100013  [https://photos.renthop.com/2/6934781_1fa4b41a...   3350   \n",
       "\n",
       "                 street_address  \n",
       "10      792 Metropolitan Avenue  \n",
       "10000       808 Columbus Avenue  \n",
       "100004          241 W 13 Street  \n",
       "100007     333 East 49th Street  \n",
       "100013    500 West 143rd Street  "
      ]
     },
     "execution_count": 214,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dpath = './data/'\n",
    "train = pd.read_json(dpath+\"RentListingInquries_train.json\")\n",
    "test = pd.read_json(dpath+\"RentListingInquries_test.json\")\n",
    "train.head()\n",
    "# test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 49352 entries, 10 to 99994\n",
      "Data columns (total 15 columns):\n",
      "bathrooms          49352 non-null float64\n",
      "bedrooms           49352 non-null int64\n",
      "building_id        49352 non-null object\n",
      "created            49352 non-null object\n",
      "description        49352 non-null object\n",
      "display_address    49352 non-null object\n",
      "features           49352 non-null object\n",
      "interest_level     49352 non-null object\n",
      "latitude           49352 non-null float64\n",
      "listing_id         49352 non-null int64\n",
      "longitude          49352 non-null float64\n",
      "manager_id         49352 non-null object\n",
      "photos             49352 non-null object\n",
      "price              49352 non-null int64\n",
      "street_address     49352 non-null object\n",
      "dtypes: float64(3), int64(3), object(9)\n",
      "memory usage: 6.0+ MB\n"
     ]
    }
   ],
   "source": [
    "# 查看训练集中的各特征的基本信息\n",
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到训练集中没有空值。数值类型特征有bathrooms(浴室)/bedrooms(卧室)/price(价格)/latitude(纬度)/longitude(经度)。同时分类型有building_id/manager_id/street_address/display_address.时间特征有：created。文本特征有description/features。图片特征有photos"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 先查看浴室特征的直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4bc35e80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "bathrooms = train['bathrooms'].value_counts()\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.barplot(bathrooms.index,bathrooms.values,alpha = 0.8,color = color[2])\n",
    "plt.xlabel('bathrooms',fontsize = 12)\n",
    "plt.ylabel('Number of Occurrences',fontsize = 12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "根据浴室的直方图可以知道,绝大多数房子只有一个浴室大于三个浴室的房子几乎没有,因此可以把包含三个以上浴室的房子信息排除掉.然后使用琴形图查看浴室个数与房客的兴趣程度关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\ipykernel_launcher.py:1: DeprecationWarning: \n",
      ".ix is deprecated. Please use\n",
      ".loc for label based indexing or\n",
      ".iloc for positional indexing\n",
      "\n",
      "See the documentation here:\n",
      "http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\pandas\\core\\indexing.py:194: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  self._setitem_with_indexer(indexer, value)\n"
     ]
    },
    {
     "data": {
      "image/png": "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idFcfvRIQ8fTO+lh63AyTO8aKyISTx4fli9bOhOmzzvvPJ0FkoIzPj7OK6+8wvbt29m+fTsvv/LyTPcST+CI1u1qTn30kskjWqVHk9ugMYa29jbWrlnL6tWrOeecc2htbVUXjhxTuBZXRCIRduzYcThwv7SN6dAU8ap2oh2XJocHPA7vof2U7H8GG5mkqbmF885dO9My3dLSop2IyKsYHR2dCdtbt2xm/4FuPAb+rDXMe5ZPE3iVhuVwAn7WWcIvuwM4FtrbWll3wfqZMF3IMxSKHEsikWDv3r28/PLLbN++nZe2vUR/aoIqU2ZInJ3AttuTb9EeA882D6Y/+YaS0hJWn7Oa1auTt7POOovy8vIs/TVyshSuZUGIx+P85Cc/4bvfvY+4hXDzeuL1Z86ZAMdEpyja/wy+g/to7+jg85/7HOecc46LVYuc/oaHh/ne977HI488QkHaxSoAABECSURBVG0p/OUZE6ypjh+13rYRH9/dWUEwBFdddRXXXnstNTU1LlQscnpL/8B94AcPsHvXbsxiQ3x1HBo5fsieAvOywbPfQ0lpCde87xre8IY30N7eXtCjcixUCteyoPT29vKNW29ly+bN2PI6ppdfjg0swhfcReDA7/EZuO66a3nve9+riy1EMuiFF17gH7/+dbp7e7msMcIHVk1T5rdMxQwP7CphU38xrc3NfPbzn+fcc891u1yR0561lieeeIJ/+vY/JVuzayCxJgGzf7NGwOww/3979x40V13fcfz94XnIhVsgkKTc0cKMReplTBjutSMNqJV0DDehUkWDM8WCf1Ar6DgOah3aOvRGrReoitws1mkstIh1EFEHiC23iAxIsKAICRDkmvAk3/6xJ3WTBgnhPHvI7vs1k9lz+Z09301y9nzOb397lrGfjDE2NsaxC4/l5JNPZsaMGZ3VrRdmuNbLTlVx7bXX8lef/jRPTpvN6r0PYZtbL+eAAw7gnLPPZo899ui6RGkorVq1ii9/+ctceuklHLjLs5z+209xwe3bctOKaZx00smccsop3lNaatnExARXXXUVF150ISsfW8maw9fAbwBrYPzacXgSjj76aE499VTmzJnTdbnaBJsaru0i1MAkYf78+dx333185ZJLqLEpBPjIhz/Mbrvt1nV50tCaOnUqixYtYvXq1fzzV6/gTY+t4saHp3D8CcezaNGirsuT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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4bc40f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train[\"bathrooms\"].ix[train[\"bathrooms\"]>3] = 3\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.violinplot(x='interest_level',y='bathrooms',data=train)\n",
    "plt.xlabel('interest_level',fontsize = 12)\n",
    "plt.ylabel('bathrooms',fontsize = 12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "浴室数量在各兴趣程度中差不多是均匀分布。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看卧室的直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAucAAAHmCAYAAADQsyDwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3XvUXHV97/H3x0QUEMotUkiCQY1WdLWKEan2eKxUDJUGV6uncFpIkZra4q21FWiPZR0rPdp6pHVZOUWJgkUuxQuposhROdRWLgGvgEhAhIcgRAMoXoDA9/wxO+348CSZJM8883uY92utWTP7u3975rtnYfxk57d/k6pCkiRJ0ug9ZtQNSJIkSeoxnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjZg76gZGaa+99qpFixaNug1JkiQ9il199dXfq6p5g4wd63C+aNEiVq9ePeo2JEmS9CiW5DuDjnVaiyRJktQIw7kkSZLUCMO5JEmS1AjDuSRJktQIw7kkSZLUCMO5JEmS1AjDuSRJktQIw7kkSZLUCMO5JEmS1IgZCedJVia5K8k3JtVfn+SGJNcm+Zu++klJ1nT7XtZXX9rV1iQ5sa++f5IrktyY5LwkO8zEeUmSJEnTaaaunH8IWNpfSPKrwBHAL1bVM4F3dfUDgCOBZ3bHvC/JnCRzgH8ADgMOAI7qxgK8Ezi1qhYDdwPHDf2MJEmSpGk2I+G8qi4D1k8q/yHwjqq6vxtzV1c/Aji3qu6vqm8Da4CDuseaqrq5qh4AzgWOSBLgJcAF3fFnAq8Y6glJkiRJQzDKOedPA/5LNx3l/yV5XlefD9zWN26iq22qvidwT1VtmFSfUpIVSVYnWb1u3bppOhVJkiRp+40ynM8FdgcOBv4MOL+7Cp4pxtY21KdUVadX1ZKqWjJv3ryt71qSJEkakrkj/OwJ4GNVVcCVSR4G9urqC/vGLQDWdq+nqn8P2C3J3O7qef94SZIkadYY5ZXzT9CbK06SpwE70Avaq4Ajkzwuyf7AYuBK4Cpgcbcyyw70bhpd1YX7LwCv7N53OXDhjJ6JJEmSNA1m5Mp5knOAFwN7JZkATgZWAiu75RUfAJZ3QfvaJOcD1wEbgOOr6qHufV4HXAzMAVZW1bXdR5wAnJvk7cCXgTNm4rwkSZKk6ZReHh5PS5YsqdWrV4+6DUmSJD2KJbm6qpYMMtZfCJUkSZIaMcobQvUosWzZ+Nx/u2rVvqNuQZIkPYp55VySJElqhOFckiRJaoThXJIkSWqE4VySJElqhOFckiRJaoThXJIkSWqE4VySJElqhOFckiRJaoThXJIkSWqE4VySJElqhOFckiRJaoThXJIkSWqE4VySJElqhOFckiRJaoThXJIkSWqE4VySJElqhOFckiRJaoThXJIkSWqE4VySJElqhOFckiRJaoThXJIkSWqE4VySJElqhOFckiRJaoThXJIkSWqE4VySJElqhOFckiRJaoThXJIkSWqE4VySJElqxNxRNyCNi2XL1o66hRmzatW+o25BkqRZySvnkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSI2YknCdZmeSuJN+YYt+fJqkke3XbSfKeJGuSfC3JgX1jlye5sXss76s/N8nXu2PekyQzcV6SJEnSdJqpK+cfApZOLiZZCLwUuLWvfBiwuHusAE7rxu4BnAw8HzgIODnJ7t0xp3VjNx73iM+SJEmSWjcj4byqLgPWT7HrVOAtQPXVjgDOqp7Lgd2S7AO8DLikqtZX1d3AJcDSbt+uVfWlqirgLOAVwzwfSZIkaRhGNuc8yTLg9qr66qRd84Hb+rYnutrm6hNT1CVJkqRZZe4oPjTJTsBfAIdOtXuKWm1DfVOfvYLeFBj222+/LfYqSZIkzZRRXTl/CrA/8NUktwALgGuS/Dy9K98L+8YuANZuob5givqUqur0qlpSVUvmzZs3DaciSZIkTY+RhPOq+npVPbGqFlXVInoB+8Cq+i6wCjimW7XlYODeqroDuBg4NMnu3Y2ghwIXd/t+mOTgbpWWY4ALR3FekiRJ0vaYqaUUzwG+BDw9yUSS4zYz/CLgZmAN8H7gjwCqaj3wV8BV3eNtXQ3gD4EPdMfcBHx6GOchSZIkDdOMzDmvqqO2sH9R3+sCjt/EuJXAyinqq4FnbV+XkiRJ0mj5C6GSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiNmJJwnWZnkriTf6Kv9bZJvJvlako8n2a1v30lJ1iS5IcnL+upLu9qaJCf21fdPckWSG5Ocl2SHmTgvSZIkaTrN1JXzDwFLJ9UuAZ5VVb8IfAs4CSDJAcCRwDO7Y96XZE6SOcA/AIcBBwBHdWMB3gmcWlWLgbuB44Z7OpIkSdL0m5FwXlWXAesn1T5bVRu6zcuBBd3rI4Bzq+r+qvo2sAY4qHusqaqbq+oB4FzgiCQBXgJc0B1/JvCKoZ6QJEmSNAStzDl/NfDp7vV84La+fRNdbVP1PYF7+oL+xvqUkqxIsjrJ6nXr1k1T+5IkSdL2G3k4T/IXwAbg7I2lKYbVNtSnVFWnV9WSqloyb968rW1XkiRJGpq5o/zwJMuBw4FDqmpjoJ4AFvYNWwCs7V5PVf8esFuSud3V8/7xkiRJ0qwxsivnSZYCJwDLqurHfbtWAUcmeVyS/YHFwJXAVcDibmWWHejdNLqqC/VfAF7ZHb8cuHCmzkOSJEmaLjO1lOI5wJeApyeZSHIc8F5gF+CSJF9J8n8Aqupa4HzgOuAzwPFV9VB3Vfx1wMXA9cD53Vjohfw/SbKG3hz0M2bivCRJkqTpNCPTWqrqqCnKmwzQVXUKcMoU9YuAi6ao30xvNRdJkiRp1hr5DaGSJEmSegznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiO2KZwn2THJDtPdjCRJkjTOBgrnSd6V5KDu9cuB9cA9SX5jmM1JkiRJ42TQK+e/A3yje/2XwO8Cy4C/HkZTkiRJ0jiaO+C4narqx0n2BJ5cVR8FSPKk4bUmSZIkjZdBw/m3kvwO8FTgEoAkewE/GVZjkiRJ0rgZNJz/EfD3wIPAq7vay4DPDqMpSZIkaRwNFM6r6irgBZNqZwNnD6MpSZIkaRwNvJRikpcmOSPJv3TbS5K8ZHitSZIkSeNl0KUUXw+cBtwIvKgr/wR4+5D6kiRJksbOoFfO3wT8WlW9A3i4q30TePpQupIkSZLG0KDhfBfgtu51dc+PBR6Y9o4kSZKkMTVoOL8MOHFS7Q3AF6a3HUmSJGl8DbqU4uuBf0nyGmCXJDcAPwB+Y2idSZIkSWNm0KUU70jyPOB5wJPoTXG5sqoe3vyRkiRJkgY1UDhP8mzg+1V1JXBlV1uYZI+q+uowG5QkSZLGxaBzzv+J3g2g/XYAPjy97UiSJEnja9Bwvl9V3dxfqKqbgEXT3pEkSZI0pgYN5xNJDuwvdNtrp78lSZIkaTwNulrLqcCFSf4GuAl4CvCnwCnDakySJEkaN4Ou1vL+JPcAxwEL6a3W8uaqumCYzUmSJEnjZNAr51TVPwP/PMReJEmSpLE26Jxzkhya5C1J3tb/GPDYlUnuSvKNvtoeSS5JcmP3vHtXT5L3JFmT5Gv9c92TLO/G35hkeV/9uUm+3h3zniQZ9LwkSZKkVgwUzpO8l95yis+lN61l42PBgJ/zIWDppNqJwOeqajHwuW4b4DBgcfdYAZzW9bAHcDLwfOAg4OSNgb4bs6LvuMmfJUmSJDVv0GktRwHPrqrbtuVDquqyJIsmlY8AXty9PhO4FDihq59VVQVcnmS3JPt0Yy+pqvUASS4Blia5FNi1qr7U1c8CXgF8elt6lSRJkkZl0Gkt3wfumebP3ruq7gDonp/Y1efTu+F0o4mutrn6xBT1KSVZkWR1ktXr1q3b7pOQJEmSpsug4fx/A2cn+eUkT+5/DKGnqeaL1zbUp1RVp1fVkqpaMm/evG1sUZIkSZp+g05rOa17PnxSvYA52/jZdybZp6ru6Kat3NXVJ+jNZ99oAb0fO5rgP6fBbKxf2tUXTDFekiRJmlUGunJeVY/ZxGNbgznAKmDjiivLgQv76sd0q7YcDNzbTXu5GDg0ye7djaCHAhd3+36Y5OBulZZj+t5LkiRJmjUGXuccIMlCYH5VXb6Vx51D76r3Xkkm6K268g7g/CTHAbcCr+qGXwT8OrAG+DFwLEBVrU/yV8BV3bi3bbw5FPhDeivC7EjvRlBvBpUkSdKsM1A4T7IfcA7wbHpTWZ6Q5JXA0qr6/S0dX1VHbWLXIVOMLeD4TbzPSmDlFPXVwLO21IckSZLUskFvCP1H4FPALsCDXe0S4KXDaEqSJEkaR4NOazkIeHlVPZykAKrq3iQ/N7zWJEmSpPEy6JXzO4Gn9heSHEBvrrgkSZKkaTBoOH8X8MkkxwJzkxwFnAe8c2idSZIkSWNmoGktVbUyyXpgBb1f6TwGeGtVfWKYzUmSJEnjZIvhPMkceksfnmIYlyRJkoZni9NaquoheksbPrilsZIkSZK23aBzzs8EXjvMRiRJkqRxtzVLKb4+yVvozTmvjTuq6kXDaGzUli1bO+oWZtSqVfuOugVJkqSxN2g4f3/3kCRJkjQkg94Q+hR6N4TeP/yWJEmSpPHkDaGSJElSI7whVJIkSWqEN4RKkiRJjfCGUEmSJKkRA4Xzqjpz2I1IkiRJ426gcJ7k1ZvaV1Urp68dSZIkaXwNOq3l6EnbP09vecV/AwznkiRJ0jQYdFrLr06udVfTnzHtHUmSJEljatClFKfyIeC4aepDkiRJGnuDzjmfHOJ3An4XuGfaO5IkSZLG1KBzzjfQt7Z553ZgxfS2I0mSJI2vQcP5/pO2f1RV35vuZiRJkqRxtjVXzn9cVXdvLCTZHdixqtYOpTNJkiRpzAx6Q+gngAWTaguAj09vO5IkSdL4GjScP72qvt5f6LZ/YfpbkiRJksbToOH8riRP7S9029+f/pYkSZKk8TRoOF8JfDTJ4UkOSPIbwAXAB4bXmiRJkjReBr0h9B3Ag8C7gIXArcAZwLuH1JckSZI0dgYK51X1MPC33UOSJEnSEAw0rSXJiUmeN6l2UJK3DKctSZIkafwMOuf8jcB1k2rXAW+a3nYkSZKk8TVoON+B3pzzfg8Aj5/ediRJkqTxNWg4vxr4o0m11wLXTG87kiRJ0vgadLWWPwYuSXI0cBPwVGBv4KXDakySJEkaN4Ou1nJtkqcBh9NbSvFjwCer6r5hNidJkiSNk0GvnAPsA3wHuLqqbhxSP5IkSdLY2uKc8yS/meQW4Abg34BvJrklySuH3ZwkSZI0TjYbzpO8HPgg8D7gycCOwFOA04APJDl86B1KkiRJY2JL01reCvxBVZ3bV7sFeGeSW7v9nxxSb5IkSdJY2dK0lmcCH9/Evo8BB0xvO5IkSdL42lI4vx/YdRP7dqP3Q0SSJEmSpsGWwvlngP+1iX1/DVw8ve1IkiRJ42tLc85PAL6Y5GvAR4E76C2p+Fv0rqj/yvY2kOSPgd8HCvg6cGz3GecCe9D7FdKjq+qBJI8DzgKeC3wf+O2quqV7n5OA44CHgDdUlX9xkCRJ0qyy2SvnVXU7cCBwIbAU+LPu+ULgwKqa2J4PTzIfeAOwpKqeBcwBjgTeCZxaVYuBu+mFbrrnu6vqqcCp3TiSHNAd98yuv/clmbM9vUmSJEkzbYvrnFfV3VX11qr65apa3D2/tarWT1MPc4Edk8wFdqJ3df4lwAXd/jOBV3Svj+i26fYfkiRd/dyqur+qvg2sAQ6apv4kSZKkGbHFcD5M3ZX5dwG30gvl9wJXA/dU1YZu2AQwv3s9H7itO3ZDN37P/voUx/yMJCuSrE6yet26ddN7QpIkSdJ2GGk4T7I7vave+wP7AjsDh00xtDYesol9m6o/slh1elUtqaol8+bN2/qmJUmSpCEZaTgHfg34dlWtq6oH6a2d/gJgt26aC8ACYG33egJYCNDt/zlgfX99imMkSZKkWWGT4TzJ5X2vTx7S598KHJxkp27u+CHAdcAXgFd2Y5bTuwEVYFW3Tbf/81VVXf3IJI9Lsj+wGLhySD1LkiRJQ7G5K+dPS/L47vWbh/HhVXUFvRs7r6G3jOJjgNPpLeH4J0nW0JtTfkZ3yBnAnl39T4ATu/e5FjifXrD/DHB8VT00jJ4lSZKkYdncOucXAt9Kcgu91VQum2pQVb1oexqoqpOByVfmb2aK1Vaq6qfAqzbxPqcAp2xPL5IkSdIobTKcV9WxSX4FWAQ8j/+8ei1JkiRpCDb7C6FV9UV6vxC6Q1WdubmxkiRJkrbPZsP5RlW1MsmvAkfTWz/8duCfqurzw2xOkiRJGicDLaWY5PeB84Dv0lvu8A7gI0leM8TeJEmSpLEy0JVz4C3AS6vqqxsLSc4DPgq8fxiNSZIkSeNm0B8h2pPeMoX9bgD2mN52JEmSpPE1aDj/IvDuJDsBJNkZ+Fvg34fVmCRJkjRuBg3nrwV+Ebg3yZ3APcAvAX8wrMYkSZKkcTPoai13AP81yQJgX2BtVU0MtTNJkiRpzAx6QygAXSA3lEuSJElDMOi0FkmSJElDZjiXJEmSGrHFcJ7kMUlekmSHmWhIkiRJGldbnHNeVQ8nubCqdpmJhiSNt2XL1o66hRm1atW+o25BktSQQae1XJbk4KF2IkmSJI25QVdr+Q7w6SQXArcBtXFHVf3lMBqTJEmSxs2g4XxH4BPd6wVD6kWSJEkaa4P+CNGxw25EkiRJGncD/whRkmcArwT2rqrXJXk68Liq+trQupMkSZLGyEA3hCZ5FXAZMB84pivvArx7SH1JkiRJY2fQ1VreBry0ql4LPNTVvgr80lC6kiRJksbQoOH8ifTCOPznSi3V91qSJEnSdho0nF8NHD2pdiRw5fS2I0mSJI2vQW8IfQPw2STHATsnuRh4GnDo0DqTJEmSxsygSyl+M8kvAIcDn6T3Q0SfrKr7htmcJEmSNE4GXkqxqn6c5N+AbwNrDeaSJEnS9Bp0KcX9kvwrcAvwKeCWJF9M8qRhNidJkiSNk0FvCD2T3k2hu1XVE4Hdgau6uiRJkqRpMOi0lucCh1bVgwBVdV+SE4DvD60zSZIkacwMeuX8cuCgSbUlwJemtx1JkiRpfG3yynmSt/Vt3gRclORT9FZqWQj8OvCR4bYnSZIkjY/NTWtZOGn7Y93zE4H7gY8Djx9GU5IkSdI42mQ4r6pjZ7IRSZIkadwNvM55kp2ApwJP6K9X1b9Pd1OSJEnSOBoonCc5Bngv8ADwk75dBew3hL4kSZKksTPolfO/AX6rqi4ZZjOSJEnSOBt0KcUHgEuH2IckSZI09gYN528F3p1kr2E2I0mSJI2zQcP5t4BlwJ1JHuoeDyd5aIi9SZIkSWNl0DnnHwbOAs7jZ28IlSRJkjRNBg3newJ/WVU1zGYkSZKkcTbotJYPAkcPsxFJkiRp3A165fwg4HVJ/gK4s39HVb1o2ruSJEmSxtCg4fz93UOSJEnSkAwUzqvqzGE1kGQ34APAs+j94uirgRvo3Xy6CLgF+G9VdXeSAH8P/DrwY+D3quqa7n2WA/+je9u3D7NnSZIkaRgGCudJXr2pfVW1cjt7+HvgM1X1yiQ7ADsBfw58rqrekeRE4ETgBOAwYHH3eD5wGvD8JHsAJwNL6AX8q5Osqqq7t7M3SZIkacYMOq1l8s2gPw88Bfg3YJvDeZJdgRcBvwdQVQ8ADyQ5AnhxN+xMer9OegJwBHBWt2rM5Ul2S7JPN/aSqlrfve8lwFLgnG3tTZIkSZppg05r+dXJte5q+jO28/OfDKwDPpjkl4CrgTcCe1fVHd1n35Hkid34+cBtfcdPdLVN1R8hyQpgBcB+++23ne1LkiRJ02fQpRSn8iHguO38/LnAgcBpVfUc4Ef0prBsSqao1WbqjyxWnV5VS6pqybx587a2X0mSJGloBgrnSR4z6fEEelef79nOz58AJqrqim77Anph/c5uugrd81194xf2Hb8AWLuZuiRJkjRrDHrlfAPwYN/jXno3bf7h9nx4VX0XuC3J07vSIcB1wCpgeVdbDlzYvV4FHJOeg4F7u+kvFwOHJtk9ye7AoV1NkiRJmjUGvSF0/0nbP6qq701TD68Hzu5WarkZOJbeXxrOT3IccCvwqm7sRfSWUVxDbynFYwGqan2SvwKu6sa9bePNoZIkSdJsMegNod8ZVgNV9RV6SyBOdsgUYws4fhPvs5LtWDlGkiRJGrXNhvMkX2ATN1Z2qqoeEaIlSZIkbb0tXTn/p03U5wNvoPeDQZIkSZKmwWbDeVWd0b+dZE/gJOA1wHnA24bXmiRJkjReBl1Kcdfuhss1wN7AgVW1oqomhtqdJEmSNEY2G86T7JjkJHqrqDwD+JWqOrqqbpqR7iRJkqQxsqU5598G5gB/A6wG9k6yd/+Aqvr8kHqTJEmSxsqWwvlP6a3WsqkfGyrgydPakSRJkjSmtnRD6KIZ6kOSJEkaewPdECpJkiRp+AznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiMM55IkSVIjDOeSJElSIwznkiRJUiOaCOdJ5iT5cpJPdtv7J7kiyY1JzkuyQ1d/XLe9ptu/qO89TurqNyR52WjORJIkSdp2TYRz4I3A9X3b7wROrarFwN3AcV39OODuqnoqcGo3jiQHAEcCzwSWAu9LMmeGepckSZKmxcjDeZIFwMuBD3TbAV4CXNANORN4Rff6iG6bbv8h3fgjgHOr6v6q+jawBjhoZs5AkiRJmh4jD+fA3wFvAR7utvcE7qmqDd32BDC/ez0fuA2g239vN/4/6lMcI0mSJM0KIw3nSQ4H7qqqq/vLUwytLezb3DGTP3NFktVJVq9bt26r+pUkSZKGadRXzl8ILEtyC3AuveksfwfslmRuN2YBsLZ7PQEsBOj2/xywvr8+xTE/o6pOr6olVbVk3rx503s2kiRJ0nYYaTivqpOqakFVLaJ3Q+fnq+p3gC8Ar+yGLQcu7F6v6rbp9n++qqqrH9mt5rI/sBi4coZOQ5IkSZoWc7c8ZCROAM5N8nbgy8AZXf0M4MNJ1tC7Yn4kQFVdm+R84DpgA3B8VT00821LkiRJ266ZcF5VlwKXdq9vZorVVqrqp8CrNnH8KcApw+tQkiRJGq5RzzmXJEmS1DGcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0wnEuSJEmNMJxLkiRJjTCcS5IkSY0YaThPsjDJF5Jcn+TaJG/s6nskuSTJjd3z7l09Sd6TZE2SryU5sO+9lnfjb0yyfFTnJEmSJG2rUV853wC8uaqeARwMHJ/kAOBE4HNVtRj4XLcNcBiwuHusAE6DXpgHTgaeDxwEnLwx0EuSJEmzxUjDeVXdUVXXdK9/CFwPzAeOAM7shp0JvKJ7fQRwVvVcDuyWZB/gZcAlVbW+qu4GLgGWzuCpSJIkSdtt1FfO/0OSRcBzgCuAvavqDugFeOCJ3bD5wG19h010tU3Vp/qcFUlWJ1m9bt266TwFSZIkabs0Ec6TPAH4KPCmqvrB5oZOUavN1B9ZrDq9qpZU1ZJ58+ZtfbOSJEnSkMwddQNJHksvmJ9dVR/ryncm2aeq7uimrdzV1SeAhX2HLwDWdvUXT6pfOsy+JWnUli1bO+oWZsyqVfuOugVJmhGjXq0lwBnA9VX17r5dq4CNK64sBy7sqx/TrdpyMHBvN+3lYuDQJLt3N4Ie2tUkSZKkWWPUV85fCBwNfD3JV7ranwPvAM5PchxwK/Cqbt9FwK8Da4AfA8cCVNX6JH8FXNWNe1tVrZ+ZU5AkSZKmx0jDeVV9kanniwMcMsX4Ao7fxHutBFZOX3eSJEnSzGrihlBJkiSQq8Z1AAAJuklEQVRJhnNJkiSpGYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRhnNJkiSpEYZzSZIkqRGGc0mSJKkRc0fdgCRJw7Rs2dpRtzCjVq3ad9QtSNoOXjmXJEmSGmE4lyRJkhphOJckSZIa8agK50mWJrkhyZokJ466H0mSJGlrPGrCeZI5wD8AhwEHAEclOWC0XUmSJEmDezSt1nIQsKaqbgZIci5wBHDdSLuSJGmWGKeVbVzVRq16NIXz+cBtfdsTwPMnD0qyAljRbd6X5IYZ6G1r7AV8b6Y/NJnpT9xufk+Dm/Hvyu9pcH5Xg/F7Gtws/K78ngY3ku9qFmrxe3rSoAMfTeF8qv+Z1SMKVacDpw+/nW2TZHVVLRl1H63zexqc39Vg/J4G53c1GL+nwfg9Dc7vajCz/Xt61Mw5p3elfGHf9gJgfP59TpIkSbPeoymcXwUsTrJ/kh2AI4FVI+5JkiRJGtijZlpLVW1I8jrgYmAOsLKqrh1xW9ui2Sk3jfF7Gpzf1WD8ngbndzUYv6fB+D0Nzu9qMLP6e0rVI6ZlS5IkSRqBR9O0FkmSJGlWM5xLkiRJjTCcNyLJ0iQ3JFmT5MRR99OqJCuT3JXkG6PupWVJFib5QpLrk1yb5I2j7qlVSR6f5MokX+2+q/856p5almROki8n+eSoe2lZkluSfD3JV5KsHnU/rUqyW5ILknyz+/Pql0fdU2uSPL3772jj4wdJ3jTqvlqV5I+7P8u/keScJI8fdU9byznnDUgyB/gW8FJ6S0JeBRxVVf666SRJXgTcB5xVVc8adT+tSrIPsE9VXZNkF+Bq4BX+N/VISQLsXFX3JXks8EXgjVV1+Yhba1KSPwGWALtW1eGj7qdVSW4BllRVaz+E0pQkZwL/WlUf6FZa26mq7hl1X63q8sLtwPOr6juj7qc1SebT+zP8gKr6SZLzgYuq6kOj7WzreOW8DQcBa6rq5qp6ADgXOGLEPTWpqi4D1o+6j9ZV1R1VdU33+ofA9fR+RVeTVM993eZju4dXLaaQZAHwcuADo+5Fs1+SXYEXAWcAVNUDBvMtOgS4yWC+WXOBHZPMBXZiFv7mjeG8DfOB2/q2JzBIaZokWQQ8B7hitJ20q5uq8RXgLuCSqvK7mtrfAW8BHh51I7NAAZ9NcnWSFaNuplFPBtYBH+ymSn0gyc6jbqpxRwLnjLqJVlXV7cC7gFuBO4B7q+qzo+1q6xnO25Apal6503ZL8gTgo8CbquoHo+6nVVX1UFU9m94vCx+UxClTkyQ5HLirqq4edS+zxAur6kDgMOD4bkqeftZc4EDgtKp6DvAjwHuuNqGb9rMM+OdR99KqJLvTm3mwP7AvsHOS3x1tV1vPcN6GCWBh3/YCZuE/w6gt3fzpjwJnV9XHRt3PbND9k/qlwNIRt9KiFwLLurnU5wIvSfJPo22pXVW1tnu+C/g4vemL+lkTwETfv1RdQC+sa2qHAddU1Z2jbqRhvwZ8u6rWVdWDwMeAF4y4p61mOG/DVcDiJPt3fzM+Elg14p40i3U3OZ4BXF9V7x51Py1LMi/Jbt3rHen94f7N0XbVnqo6qaoWVNUien9Gfb6qZt0VqZmQZOfuRmy6aRqHAq4wNUlVfRe4LcnTu9IhgDetb9pROKVlS24FDk6yU/f/g4fQu+dqVpk76gYEVbUhyeuAi4E5wMqqunbEbTUpyTnAi4G9kkwAJ1fVGaPtqkkvBI4Gvt7NpQb486q6aIQ9tWof4MxuFYTHAOdXlcsEanvsDXy8lw2YC3ykqj4z2paa9Xrg7O7C1M3AsSPup0lJdqK3otsfjLqXllXVFUkuAK4BNgBfBk4fbVdbz6UUJUmSpEY4rUWSJElqhOFckiRJaoThXJIkSWqE4VySJElqhOFckiRJaoThXJJmqSS3JPm1aXifDyV5+3T0JEnaPoZzSZIkqRGGc0nSJiXxx+okaQYZziVpdntekuuS3J3kg0keD5Dk8CRfSXJPkn9P8osbD0jynCTXJPlhkvOAx/fte3GSiSQnJPku8MGu/poka5KsT7Iqyb59x7wgyVVJ7u2eX9C379Ikb+96uC/JvyTZM8nZSX7QjV/UjU2SU5Pc1b3X15I8a9hfoCS1xHAuSbPb7wAvA54CPA34H0kOBFbS+6nvPYF/BFYleVz3M+mfAD4M7AH8M/Bbk97z57t9TwJWJHkJ8L+A/wbsA3wHOBcgyR7Ap4D3dJ/1buBTSfbse78jgaOB+V2fX6IX+vcArgdO7sYdCryoO4/dgN8Gvr9d344kzTKGc0ma3d5bVbdV1XrgFOAo4DXAP1bVFVX1UFWdCdwPHNw9Hgv8XVU9WFUXAFdNes+HgZOr6v6q+gm9vwCsrKprqup+4CTgl7sr3i8HbqyqD1fVhqo6B/gm8Bt97/fBqrqpqu4FPg3cVFX/t6o20PvLwXO6cQ8CuwC/AKSqrq+qO6bxu5Kk5hnOJWl2u63v9XeAfeld8X5zN6XlniT3AAu7ffsCt1dVTTqu37qq+mnf9r79Y6rqPnpXtOdP3tf3fvP7tu/se/2TKbaf0L3v54H3Av8A3Jnk9CS7burEJenRyHAuSbPbwr7X+wFr6QX2U6pqt77HTt1V7TuA+Uky6bh+NWl7Lb3AD0CSnelNYbl98r6+97t9W06mqt5TVc8Fnklvesufbcv7SNJsZTiXpNnt+CQLurnffw6cB7wfeG2S53c3We6c5OVJdqE333sD8IYkc5P8JnDQFj7jI8CxSZ6d5HHAXwNXVNUtwEXA05L89+79fhs4APjk1p5Ikud1PT8W+BHwU+ChrX0fSZrNDOeSNLt9BPgscHP3eHtVraY37/y9wN3AGuD3AKrqAeA3u+276d10+bHNfUBVfQ54K/BRelfen0LvJk+q6vvA4cCb6U11eQtweFV9bxvOZVd6f7G4m97UmO8D79qG95GkWSs/O+1QkiRJ0qh45VySJElqhOFckiRJaoThXJIkSWqE4VySJElqhOFckiRJaoThXJIkSWqE4VySJElqhOFckiRJasT/B7/bIvws2/kkAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4bc356a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "bedrooms_count = train['bedrooms'].value_counts()\n",
    "plt.figure(figsize=(12,8))\n",
    "sns.barplot(bedrooms_count.index,bedrooms_count.values,alpha = 0.8,color='b')\n",
    "plt.xlabel('bedrooms',fontsize=12)\n",
    "plt.ylabel('Number of Occurrences',fontsize = 12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看卧室数量与兴趣等级的计数图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA8YAAAHmCAYAAACxopfeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xu0XlV5L/7vY7gLHhSQKgETlModhBDBQAqiiEqlWi1wrBe0YiuKYkvVcxTaVHuOLT8v2FqrgmJFQfACR1GEqgNBRYIiSkAJGCFCIYJoqVwE5u+PvUI3IZdX2Pt99876fMbYY79rrrnWet6swQjfzLnmqtZaAAAAoK8eNeoCAAAAYJQEYwAAAHpNMAYAAKDXBGMAAAB6TTAGAACg1wRjAAAAek0wBgAAoNcEYwAAAHpNMAYAAKDX1hl1AaO0+eabt1mzZo26DAAAACbBZZdd9ovW2hZr6tfrYDxr1qwsXLhw1GUAAAAwCarqZ4P0M5UaAACAXhOMAQAA6DXBGAAAgF7r9TPGK/Pb3/42S5cuzV133TXqUqaFDTbYIDNnzsy666476lIAAAAeFsF4BUuXLs0mm2ySWbNmpapGXc6U1lrLrbfemqVLl2b27NmjLgcAAOBhGcpU6qo6papuqaofjWv7x6q6uqquqKrPV9Wm4/a9raoWV9WPq+o549oP7toWV9Vbx7XPrqpLquqaqjqjqtZ7uLXedddd2WyzzYTiAVRVNttsM6PrAADAtDasZ4w/nuTgFdrOT7Jza23XJD9J8rYkqaodkxyeZKfumA9W1YyqmpHkn5M8N8mOSY7o+ibJu5O8t7W2XZJfJnn1IylWKB6cPysAAGC6G0owbq1dmOS2Fdq+2lq7t9v8TpKZ3edDk5zeWru7tfbTJIuTzO1+FrfWrmut3ZPk9CSH1lgye2aSs7rjT03yR5P6hQAAAFhrTJVVqV+V5Mvd562S3DBu39KubVXtmyW5fVzIXt4OAAAAazTyYFxV/zvJvUlOW960km7tYbSv6npHVdXCqlq4bNmygWp8xjOescY+73vf+/Kb3/xmoPM9XJdffnnOPffc1fb5+Mc/nte//vUTet3JOCcAAMBUMdJgXFWvSHJIkpe21paH2aVJth7XbWaSG1fT/oskm1bVOiu0r1Rr7cOttTmttTlbbLHFQHV+61vfWmOfhxOM77vvvt+p/yDBGAAAgN/NyIJxVR2c5C1JXtBaG58oz0lyeFWtX1Wzk2yX5LtJLk2yXbcC9XoZW6DrnC5Qfz3Ji7vjX5Hk7ImsdeONN06SfOMb38j++++fF7/4xdl+++3z0pe+NK21nHTSSbnxxhtzwAEH5IADDkiSfPWrX80+++yTPfbYIy95yUtyxx13JElmzZqVBQsWZN99982ZZ56Za6+9NgcffHD23HPP7Lfffrn66quTJGeeeWZ23nnn7Lbbbpk/f37uueeeHH/88TnjjDOy++6754wzzlhj3cuWLcsf//EfZ6+99spee+2Viy++OPfff39mzZqV22+//YF+T3nKU3LzzTevtD8AAMDabijvMa6qTyfZP8nmVbU0yQkZW4V6/STndysbf6e19uettSur6jNJFmVsivXRrbX7uvO8Psl5SWYkOaW1dmV3ibckOb2q3pnk+0lOnqzv8v3vfz9XXnllnvjEJ2bevHm5+OKLc8wxx+Q973lPvv71r2fzzTfPL37xi7zzne/MBRdckEc/+tF597vfnfe85z05/vjjkyQbbLBBLrrooiTJgQcemA996EPZbrvtcskll+R1r3tdvva1r2XBggU577zzstVWW+X222/PeuutlwULFmThwoX5p3/6p4FqfeMb35hjjz02++67b66//vo85znPyVVXXZVDDz00n//853PkkUfmkksuyaxZs7Llllvmf/7P/7nS/gAAAGuzoQTj1toRK2leZXhtrb0rybtW0n5ukofMJW6tXZexVasn3dy5czNz5tgC2rvvvnuWLFmSfffd90F9vvOd72TRokWZN29ekuSee+7JPvvs88D+ww47LElyxx135Fvf+lZe8pKXPLDv7rvvTpLMmzcvr3zlK/Mnf/InedGLXvSwar3ggguyaNGiB7Z//etf5z//8z9z2GGHZcGCBTnyyCNz+umnP1DPqvoDAACszYYSjNcm66+//gOfZ8yYkXvvvfchfVprefazn51Pf/rTKz3Hox/96CTJ/fffn0033TSXX375Q/p86EMfyiWXXJIvfelL2X333VfaZ03uv//+fPvb386GG274oPZ99tknixcvzrJly/KFL3whb3/721fbHwAAYG028lWp1xabbLLJA6Ore++9dy6++OIsXrw4SfKb3/wmP/nJTx5yzGMe85jMnj07Z555ZpKxQP2DH/wgSXLttdfm6U9/ehYsWJDNN988N9xww4OuMYiDDjroQdOul4frqsoLX/jCvPnNb84OO+yQzTbbbLX9AQAA1maC8QQ56qij8tznPjcHHHBAtthii3z84x/PEUcckV133TV77733A4tqrei0007LySefnN122y077bRTzj57bN2w4447Lrvsskt23nnnzJ8/P7vttlsOOOCALFq0aODFt0466aQsXLgwu+66a3bcccd86EMfemDfYYcdlk9+8pMPTKNeU38AAIC1Vf33W5L6Z86cOW3hwoUParvqqquyww47jKii6cmfGQAAMBVV1WWttTlr6mfEGAAAgF6z+NY09bGPfSzvf//7H9Q2b968/PM///OIKlq7XL9gl6Fda5vjfzi0awEAAA8lGE9TRx55ZI488shRlwEAADDtmUoNAABArwnGAAAA9JpgDAAAQK95xngN9jzuExN6vsv+8eUTer412X///XPiiSdmzpw5ed7znpdPfepT2XTTTYdaAwAAwFQmGPfIueeeO+oSAAAAphxTqaegJUuWZPvtt8+f/dmfZeedd85LX/rSXHDBBZk3b1622267fPe7381//dd/5VWvelX22muvPO1pT8vZZ5+dJLnzzjtz+OGHZ9ddd81hhx2WO++884Hzzpo1K7/4xS+yZMmS7Lzzzg+0n3jiifmbv/mbJGMjzMcee2zmz5+fHXbYIZdeemle9KIXZbvttsvb3/72of45AAAADIMR4ylq8eLFOfPMM/PhD384e+21Vz71qU/loosuyjnnnJO///u/z4477phnPvOZOeWUU3L77bdn7ty5edaznpV//dd/zUYbbZQrrrgiV1xxRfbYY4/f+drrrbdeLrzwwrz//e/PoYcemssuuyyPe9zj8uQnPznHHntsNttss0n4xgAAAKMhGE9Rs2fPzi677JIk2WmnnXLggQemqrLLLrtkyZIlWbp0ac4555yceOKJSZK77ror119/fS688MIcc8wxSZJdd901u+666+987Re84AVJkl122SU77bRTnvCEJyRJtt1229xwww2CMQAAsFYRjKeo9ddf/4HPj3rUox7YftSjHpV77703M2bMyGc/+9k89alPfcixVbXac6+zzjq5//77H9i+6667Vnrt8dcdf20AAIC1iWeMp6nnPOc5+cAHPpDWWpLk+9//fpJk/vz5Oe2005IkP/rRj3LFFVc85Ngtt9wyt9xyS2699dbcfffd+eIXvzi8wgEAAKYYI8ZrMOzXKw3qHe94R970pjdl1113TWsts2bNyhe/+MX8xV/8RY488sjsuuuu2X333TN37tyHHLvuuuvm+OOPz9Of/vTMnj0722+//Qi+AQAAwNRQy0cc+2jOnDlt4cKFD2q76qqrssMOO4yooulpbfwzu37BLkO71jbH/3Bo1wIAgD6pqstaa3PW1M9UagAAAHpNMAYAAKDXBGMAAAB6TTAGAACg1wRjAAAAek0wBgAAoNe8x3gNJvq1PYO8mmfjjTfOHXfcMaHXBQAAYOWMGAMAANBrgvEU1lrLcccdl5133jm77LJLzjjjjCTJ6173upxzzjlJkhe+8IV51atelSQ5+eST8/a3v31k9QIAAExHgvEU9rnPfS6XX355fvCDH+SCCy7Icccdl5tuuinz58/PN7/5zSTJz3/+8yxatChJctFFF2W//fYbZckAAADTjmA8hV100UU54ogjMmPGjGy55Zb5gz/4g1x66aXZb7/98s1vfjOLFi3KjjvumC233DI33XRTvv3tb+cZz3jGqMsGAACYViy+NYW11lbavtVWW+WXv/xlvvKVr2T+/Pm57bbb8pnPfCYbb7xxNtlkkyFXCQAAML0ZMZ7C5s+fnzPOOCP33Xdfli1blgsvvDBz585Nkuyzzz553/vel/nz52e//fbLiSeeaBo1AADAw2DEeA0Geb3SZHnhC1+Yb3/729ltt91SVfmHf/iH/N7v/V6SZL/99stXv/rVPOUpT8mTnvSk3HbbbYIxAADAw1Crmq7bB3PmzGkLFy58UNtVV12VHXbYYUQVTU9r45/ZRL+/enVG+Y8vAACwNquqy1prc9bUz1RqAAAAek0wBgAAoNcEYwAAAHpNMAYAAKDXBGMAAAB6TTAGAACg17zHeA3mfWDehJ7v4jdcvMY+S5YsySGHHJIf/ehHD2o//vjjM3/+/DzrWc9a5bF/8zd/k4033jh/9Vd/9YhrBQAA6APBeBpZsGDBqEsAAABY65hKPUXdd999ec1rXpOddtopBx10UO6888688pWvzFlnnZUkOffcc7P99ttn3333zTHHHJNDDjnkgWMXLVqU/fffP9tuu21OOumkUX0FAACAaUEwnqKuueaaHH300bnyyiuz6aab5rOf/ewD++66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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4bc71400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(16,8))\n",
    "sns.countplot(x='bedrooms',hue='interest_level',data=train)\n",
    "plt.xlabel('bedrooms',fontsize=12)\n",
    "plt.ylabel('Number of Occurrences',fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看房屋租赁价格的离散分布图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhQAAAF6CAYAAABBbMFSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAGbxJREFUeJzt3X+w3XWd3/Hny/BDXF0DEi0kYLBmGLHuCt7BdO10HHRJEGsyW3eK1UJdalarXXfcYSW706q7dEZLZ3Wp7ioKFRwrUKWYQWia+mO22yJwIygimyUqSAgrcUJYdswghHf/OJ/LHkIIOfdz77m5uc/HzJnz/b6/n+/5fs5nOJdXvt/P95xUFZIkST2eM9cdkCRJ85+BQpIkdTNQSJKkbgYKSZLUzUAhSZK6GSgkSVI3A4UkSepmoJAkSd0MFJIkqZuBQpIkdTtsrjswnxx77LG1fPnyue6GJEljsXnz5p9V1ZIDaWugGMHy5cuZnJyc625IkjQWSe490LZe8pAkSd0MFJIkqZuBQpIkdTNQSJKkbgYKSZLUzUAhSZK6GSgkSVI3A4UkSepmoJAkSd38pkxJkua56267n4s3bmH7rt0cv/goLlh1MmtPXTrWPhgoJEmax6677X7WX3sHux/bA8D9u3az/to7AMYaKrzkIUnSPHbxxi1Phokpux/bw8Ubt4y1HwYKSZLmse27do9Uny0GCkmS5rHjFx81Un22GCgkSZrHLlh1MkcdvugptaMOX8QFq04eaz+clClJ0jw2NfHSuzwkSVKXtacuHXuA2JuXPCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkrqNNVAkWZTktiTXt/WTktyc5O4kVyc5otWPbOtb2/blQ6+xvtW3JFk1VF/daluTXDhUH/kYkiRpNOM+Q/F+4K6h9Y8BH6+qFcBDwPmtfj7wUFW9HPh4a0eSU4BzgFcCq4E/ayFlEfAp4CzgFOBtre3Ix5AkSaMbW6BIsgw4G/hcWw9wBvDl1uQKYG1bXtPWadvf0NqvAa6qqker6sfAVuD09thaVT+qql8AVwFrpnkMSZI0onGeofgE8PvAE239RcCuqnq8rW8DlrblpcB9AG37w639k/W99nmm+nSOIUmSRjSWQJHkzcCDVbV5uLyPpvUs22aq/mzHf1KSdUkmk0zu2LFjH7tIkqRxnaF4HfCWJPcwuBxxBoMzFouTHNbaLAO2t+VtwAkAbfsLgZ3D9b32eab6z6ZxjKeoqkuraqKqJpYsWTKd9y5J0iFvLIGiqtZX1bKqWs5gUuU3qurtwDeBt7Zm5wFfbcsb2jpt+zeqqlr9nHaHxknACuAW4FZgRbuj44h2jA1tn1GPIUmSRnTYszeZVR8ErkpyEXAbcFmrXwZ8IclWBmcNzgGoqjuTXAP8AHgceG9V7QFI8j5gI7AIuLyq7pzOMSRJ0ujiP8oP3MTERE1OTs51NyRJGoskm6tq4kDa+k2ZkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSp21gCRZLnJrklyXeT3JnkI61+UpKbk9yd5OokR7T6kW19a9u+fOi11rf6liSrhuqrW21rkguH6iMfQ5IkjWZcZygeBc6oql8FXg2sTrIS+Bjw8apaATwEnN/anw88VFUvBz7e2pHkFOAc4JXAauDPkixKsgj4FHAWcArwttaWUY8hSZJGN5ZAUQN/11YPb48CzgC+3OpXAGvb8pq2Ttv+hiRp9auq6tGq+jGwFTi9PbZW1Y+q6hfAVcCats+ox5AkSSMa2xyKdibhduBBYBPwQ2BXVT3emmwDlrblpcB9AG37w8CLhut77fNM9RdN4xiSJGlEYwsUVbWnql4NLGNwRuEV+2rWnvd1pqBmsL6/YzxFknVJJpNM7tixYx+7SJKksd/lUVW7gG8BK4HFSQ5rm5YB29vyNuAEgLb9hcDO4fpe+zxT/WfTOMbe/b20qiaqamLJkiXTe9OSJB3ixnWXx5Iki9vyUcAbgbuAbwJvbc3OA77alje0ddr2b1RVtfo57Q6Nk4AVwC3ArcCKdkfHEQwmbm5o+4x6DEmSNKLDnr3JjDgOuKLdjfEc4Jqquj7JD4CrklwE3AZc1tpfBnwhyVYGZw3OAaiqO5NcA/wAeBx4b1XtAUjyPmAjsAi4vKrubK/1wVGOIUmSRhf/UX7gJiYmanJycq67IUnSWCTZXFUTB9LWb8qUJEndDBSSJKmbgUKSJHUzUEiSpG4GCkmS1M1AIUmSuhkoJElSNwOFJEnqZqCQJEndDBSSJKmbgUKSJHUzUEiSpG4GCkmS1M1AIUmSuhkoJElSNwOFJEnqZqCQJEndDBSSJKmbgUKSJHUzUEiSpG4GCkmS1M1AIUmSuhkoJElSNwOFJEnqZqCQJEndDBSSJKmbgUKSJHUzUEiSpG4GCkmS1M1AIUmSuhkoJElSNwOFJEnqZqCQJEndRg4USU5IsnI2OiNJkuanAw4USU5M8n+BvwL+d6u9NcnnZqtzkiRpfhjlDMVngK8BLwAea7VNwK/PdKckSdL8ctgIbU8Hzq6qJ5IUQFU9nOSFs9M1SZI0X4xyhuKnwMuHC0lOAX4yoz2SJEnzziiB4j8D1yd5J3BYkrcBVwMfm5WeSZKkeeOAL3lU1eVJdgLrgPuAc4F/X1XXzVbnJEnS/DDKHApaeDBASJKkpxjlttFLkvzaXrVfS/KJme+WJEmaT0aZQ/E2YHKv2mbgX85cdyRJ0nw0SqCofbRfNOJrSJKkQ9AoYeD/ABcleQ5Ae/5wq0uSpAVslEmZ7weuBx5Ici9wIvAA8M9mo2OSJGn+GOW20W1JTgNeCyxjcOvoLVX1xGx1TpIkzQ+j3jb6BHDTLPVFkiTNU/sNFEnuqqpXtOX7GEzMfJqqOnEW+iZJkuaJZztD8a6h5XfMZkckSdL8td9AUVV/CZBkEfBbwLqqenQcHZMkSfPHAd02WlV7gDMBJ2BKkqSnGeV7KD4OfCTJ4bPVGUmSND+NcpfHvwP+AfCBJDsYTNAMUE7KlCRpYRslUDgpU5Ik7dMolzxuAt4AfA64oT2/Ebh5FvolSZLmkVHOUPw5cDLwO8C9wEuB9cBSBneASJKkBWqUMxRrgTdX1Y1V9YOqurHV1j7bjklOSPLNJHcluTPJ+1v9mCSbktzdno9u9SS5JMnWJN9rX/k99VrntfZ3JzlvqP6aJHe0fS5JkukeQ5IkjWaUQPE3wPP2qh3F4AfCns3jwO+1b91cCbw3ySnAhcDXq2oF8PW2DnAWsKI91jE4O0KSY4APMfg9kdOBD00FhNZm3dB+q1t9pGNIkqTRjRIovgD8zyTvSnJWknUM5lJcmeSMqce+dqyqB6rqO235EeAuBpdK1gBXtGZX8PdnO9YAV9bAt4HFSY4DVgGbqmpnVT0EbAJWt22/XFU3VVUBV+71WqMcQ5IkjWiUORS/3Z7/YK/6u9sDBreSvmx/L5JkOXAqg8mcL6mqB2AQOpK8uDVbyuDXTKdsa7X91bfto840jnEgZ1wkSdKQUX6+/KTegyV5PvAV4Her6m/bNId9Nt1XF6ZR3293DmSfdiZmHcCJJ/p1G5Ik7csolzy6tG/Y/Arwxaq6tpV/OnWZoT0/2OrbgBOGdl8GbH+W+rJ91KdzjKeoqkuraqKqJpYsWXLgb1iSpAVkLIGi3XFxGXBXVf3J0KYNwNSdGucBXx2qn9vuxFgJPNwuW2wEzkxydJuMeSawsW17JMnKdqxz93qtUY4hSZJGNMocih6vA/4VcEeS21vtD4CPAtckOR/4CfCbbdsNwJuArcDPgXcCVNXOJH8M3Nra/VFV7WzL7wE+z+DOkxvbg1GPIUmSRpfBTRE6EBMTEzU5OTnX3ZAkaSySbK6qiQNpO7Y5FJIk6dBloJAkSd0MFJIkqZuBQpIkdTNQSJKkbgYKSZLUzUAhSZK6GSgkSVI3A4UkSepmoJAkSd0MFJIkqZuBQpIkdTNQSJKkbgYKSZLUzUAhSZK6GSgkSVI3A4UkSepmoJAkSd0MFJIkqZuBQpIkdTNQSJKkbgYKSZLUzUAhSZK6GSgkSVI3A4UkSepmoJAkSd0MFJIkqZuBQpIkdTNQSJKkbgYKSZLUzUAhSZK6GSgkSVI3A4UkSepmoJAkSd0MFJIkqZuBQpIkdTNQSJKkbgYKSZLUzUAhSZK6GSgkSVI3A4UkSepmoJAkSd0MFJIkqZuBQpIkdTNQSJKkbgYKSZLUzUAhSZK6GSgkSVK3w+a6A5Ikqc91t93PxRu3sH3Xbo5ffBQXrDqZtacuHWsfDBSSJM1j1912P+uvvYPdj+0B4P5du1l/7R0AYw0VXvKQJGkeu3jjlifDxJTdj+3h4o1bxtoPA4UkSfPY9l27R6rPFgOFJEnz2PGLjxqpPlsMFJIkzWMXrDqZRc/JU2qLnhMuWHXyWPthoJAkaR6bvHcne56op9T2PFFM3rtzrP0wUEiSNI996eb7RqrPFgOFJEnz2J6qkeqzZSyBIsnlSR5M8v2h2jFJNiW5uz0f3epJckmSrUm+l+S0oX3Oa+3vTnLeUP01Se5o+1ySJNM9hiRJ88miZKT6bBnXGYrPA6v3ql0IfL2qVgBfb+sAZwEr2mMd8OcwCAfAh4DXAqcDH5oKCK3NuqH9Vk/nGJIkzTdve+0JI9Vny1gCRVX9BbD37JA1wBVt+Qpg7VD9yhr4NrA4yXHAKmBTVe2sqoeATcDqtu2Xq+qmqirgyr1ea5RjSJI0r1y09lW8Y+WJT56RWJTwjpUnctHaV421H3P51dsvqaoHAKrqgSQvbvWlwPBMkm2ttr/6tn3Up3OMB3rflCRJ43bR2leNPUDs7WCclLmviz41jfp0jvH0hsm6JJNJJnfs2PEsLytJ0sI0l4Hip1OXGdrzg62+DRi+8LMM2P4s9WX7qE/nGE9TVZdW1URVTSxZsmSkNyhJ0kIxl4FiAzB1p8Z5wFeH6ue2OzFWAg+3yxYbgTOTHN0mY54JbGzbHkmyst3dce5erzXKMSRJ0jSMZQ5Fki8BrweOTbKNwd0aHwWuSXI+8BPgN1vzG4A3AVuBnwPvBKiqnUn+GLi1tfujqpqa6PkeBneSHAXc2B6MegxJkjQ9qTF/8cV8NjExUZOTk3PdDUmSxiLJ5qqaOJC2B+OkTEmSNM8YKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkroZKCRJUjcDhSRJ6magkCRJ3QwUkiSpm4FCkiR1M1BIkqRuBgpJktTNQCFJkrodNtcdkCRJfa677X4u3riF7bt2c/zio7hg1cmsPXXpWPtgoJAkaR677rb7WX/tHex+bA8A9+/azfpr7wAYa6jwkockSfPYxRu3PBkmpux+bA8Xb9wy1n4YKCRJmsfu37V7pPpsMVBIkqRuBgpJktTNQCFJkroZKCRJUrcFfdtoktXAnwKLgM9V1UfnuEuSpAVm+YVfm+suzIgFGyiSLAI+Bfw6sA24NcmGqvrBbB/7UPmPR5KkKQv5ksfpwNaq+lFV/QK4Clgz2wc1TEiSDkULOVAsBe4bWt/WapIkaUQLOVBkH7V6WqNkXZLJJJM7duwYQ7ckSZp/FnKg2AacMLS+DNi+d6OqurSqJqpqYsmSJWPrnCRJPe756NljPd5CDhS3AiuSnJTkCOAcYMMc90mSpG7jDhOwgO/yqKrHk7wP2MjgttHLq+rO2T7uPR8924mZkqT9motA0GvBBgqAqroBuGHcx52P/6FIkrQ/C/mShyRJmiEGCkmS1M1AIUmSuhkoJElSNwOFJEnqZqCQJEndDBSSJKmbgUKSJHUzUEiSpG4GCkmS1C1VT/vFbj2DJDuAe2fwJY8FfjaDr7eQOZYzw3GcGY7jzHAcZ850x/KlVXVAP7VtoJhDSSaramKu+3EocCxnhuM4MxzHmeE4zpxxjKWXPCRJUjcDhSRJ6magmFuXznUHDiGO5cxwHGeG4zgzHMeZM+tj6RwKSZLUzTMUkiSpm4FijiRZnWRLkq1JLpzr/hwMklye5MEk3x+qHZNkU5K72/PRrZ4kl7Tx+16S04b2Oa+1vzvJeUP11yS5o+1zSZKM9x2OR5ITknwzyV1J7kzy/lZ3LEeQ5LlJbkny3TaOH2n1k5Lc3Mbk6iRHtPqRbX1r27586LXWt/qWJKuG6gvm70CSRUluS3J9W3ccpyHJPe2zd3uSyVY7OD7bVeVjzA9gEfBD4GXAEcB3gVPmul9z/QD+KXAa8P2h2n8CLmzLFwIfa8tvAm4EAqwEbm71Y4Afteej2/LRbdstwD9u+9wInDXX73mWxvE44LS2/ALgr4FTHMuRxzHA89vy4cDNbXyuAc5p9U8D72nL/xb4dFs+B7i6LZ/SPuNHAie1z/6ihfZ3APgA8N+A69u64zi9cbwHOHav2kHx2fYMxdw4HdhaVT+qql8AVwFr5rhPc66q/gLYuVd5DXBFW74CWDtUv7IGvg0sTnIcsArYVFU7q+ohYBOwum375aq6qQafmiuHXuuQUlUPVNV32vIjwF3AUhzLkbTx+Lu2enh7FHAG8OVW33scp8b3y8Ab2r/u1gBXVdWjVfVjYCuDvwEL5u9AkmXA2cDn2npwHGfSQfHZNlDMjaXAfUPr21pNT/eSqnoABv+jBF7c6s80hvurb9tH/ZDWThefyuBf147liNpp+tuBBxn80f0hsKuqHm9Nht/7k+PVtj8MvIjRx/dQ9Ang94En2vqLcBynq4D/lWRzknWtdlB8tg8b4U1o5uzrmpS324zmmcZw1PohK8nzga8Av1tVf7ufS6GO5TOoqj3Aq5MsBv4H8Ip9NWvPo47Xvv5Bd8iNY5I3Aw9W1eYkr58q76Op43hgXldV25O8GNiU5K/203asn23PUMyNbcAJQ+vLgO1z1JeD3U/baTja84Ot/kxjuL/6sn3UD0lJDmcQJr5YVde2smM5TVW1C/gWg+vQi5NM/WNs+L0/OV5t+wsZXMIbdXwPNa8D3pLkHgaXI85gcMbCcZyGqtrenh9kEHJP5yD5bBso5satwIo2y/kIBhOPNsxxnw5WG4CpGcjnAV8dqp/bZjGvBB5up/o2AmcmObrNdD4T2Ni2PZJkZbsee+7Qax1S2vu7DLirqv5kaJNjOYIkS9qZCZIcBbyRwXyUbwJvbc32Hsep8X0r8I12HXoDcE67e+EkYAWDiW8L4u9AVa2vqmVVtZzBe/xGVb0dx3FkSX4pyQumlhl8Jr/PwfLZnotZqj6enH371wyuyf7hXPfnYHgAXwIeAB5jkJTPZ3Dt9OvA3e35mNY2wKfa+N0BTAy9zm8xmLC1FXjnUH2iffh+CHyS9sVuh9oD+CcMTlN+D7i9Pd7kWI48jr8C3NbG8fvAf2j1lzH4H9lW4L8DR7b6c9v61rb9ZUOv9YdtrLYwNGt+of0dAF7P39/l4TiOPn4vY3AXy3eBO6fe68Hy2fabMiVJUjcveUiSpG4GCkmS1M1AIUmSuhkoJElSNwOFJEnqZqCQNBYZ/GLn66ex3+eTXDQLXZI0g/zqbUljUVWvnOs+SJo9nqGQJEndDBSSxiLJPUnemOTDSa5JcmWSR9qlkImhdqcm+U7bdjWDb04cfp03J7k9ya4k/y/Jr7T6P0yyM8lpbf34JD+bzmUWSaMzUEiaC29h8ENRixn83sAnAdpvMVwHfAE4hsFXMP/zqZ1aWLgc+G0GXzf8GWBDkiOr6ofAB4EvJnke8F+Bz1fVt8b0nqQFzUAhaS78ZVXdUIOfB/8C8KutvhI4HPhEVT1WVV9m8ONPU94FfKaqbq6qPVV1BfBo24+q+iyD3zO4GTiOwW8/SBoDA4WkufA3Q8s/B57bfqr6eOD+euqPDN07tPxS4Pfa5Y5dSXYx+Bnm44fafBb4R8B/qapHZ6f7kvZmoJB0MHkAWNp+OnnKiUPL9wH/saoWDz2eV1VfAkjyfOATDH6+/cNJjhlbz6UFzkAh6WByE/A48DtJDkvyG8DpQ9s/C7w7yWsz8EtJzk7ygrb9T4HNVfVvgK8Bnx5r76UFzEAh6aBRVb8AfgP418BDwL8Arh3aPslgHsUn2/atrS1J1gCrgXe35h8ATkvy9vH0XlrY8tRLlZIkSaPzDIUkSepmoJAkSd0MFJIkqZuBQpIkdTNQSJKkbgYKSZLUzUAhSZK6GSgkSVI3A4UkSer2/wFRw7CHOeVQSQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4bd8df60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,6))\n",
    "plt.scatter(range(train.shape[0]),np.sort(train.price.values))\n",
    "plt.xlabel(\"index\",fontsize=12)\n",
    "plt.ylabel(\"price\",fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到价格超出1000000的肯定是异常值，将这些噪声点可以直接去掉。并画出直方图与核密度估计图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4bd9e470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ulimit = np.percentile(train.price.values,99)\n",
    "train.loc[train['price']>ulimit] = ulimit\n",
    "plt.figure(figsize=(10,8))\n",
    "sns.distplot(train.price.values,bins = 50,kde=True)\n",
    "plt.xlabel('prices',fontsize = 12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这样，价格的分布基本上符合了正态分布的情况"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看经度与纬度的情况 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4bc33da0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#先看纬度的情况 \n",
    "plt.figure(figsize=(12,6))\n",
    "sns.distplot(train.latitude.values, bins=50, kde=False)\n",
    "plt.xlabel('latitude', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到数据比较集中，但是还存在部分异常值。取1%至99%之间的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4bc33e80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "llimit = np.percentile(train.latitude.values, 1)\n",
    "rlimit = np.percentile(train.latitude.values, 99)\n",
    "\n",
    "train.loc[train['latitude']<llimit]=llimit\n",
    "train.loc[train['latitude']>rlimit]=rlimit\n",
    "#先看纬度的情况 \n",
    "plt.figure(figsize=(12,6))\n",
    "sns.distplot(train.latitude.values, bins=50, kde=False)\n",
    "plt.xlabel('latitude', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "根据上图显示，可以看到绝大多数纬度集中在40.6至40.9之间。因此再进行处理。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs8AAAF6CAYAAADmnbXsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAHHJJREFUeJzt3X+w5tVdH/D3Jyz5YRKFyCZD+CGoa5VYJXFl6aRqTAwQ/EGcMUrIJDSTKWpJqzbWEMcWjWWqHU3aTCNTYkiIFQkTdYKKIsXYmGo2LBEwQFJWwGUDEzYC+WGmRMinf9zvNk+Wu7vn/nju3b28XjPPPM/3fM95nvPdM8/e9z33fL/f6u4AAAAH96T17gAAABwuhGcAABgkPAMAwCDhGQAABgnPAAAwSHgGAIBBwjMAAAwSngEAYJDwDAAAg4RnAAAYtGm9O3AgxxxzTJ900knr3Q0AADa4m2666dPdvflg9Q7p8HzSSSdlx44d690NAAA2uKr6u5F6lm0AAMAg4RkAAAYJzwAAMEh4BgCAQcIzAAAMEp4BAGCQ8AwAAIOEZwAAGCQ8AwDAIOEZAAAGCc8AADBIeAYAgEHCMwAADNq03h0AmKcrt+9acpvztp04h54AsBGYeQYAgEHCMwAADBKeAQBgkPAMAACDhGcAABgkPAMAwCDhGQAABgnPAAAwSHgGAIBBwjMAAAwSngEAYJDwDAAAg4RnAAAYJDwDAMAg4RkAAAYJzwAAMEh4BgCAQQcNz1X11Kr6SFXdUlW3VdUvTeXvrqq7q+rm6XHqVF5V9baq2llVt1bVC2be6/yqunN6nD+/wwIAgNW3aaDOI0le3N2fr6ojk3yoqv542vfvuvt9+9R/WZIt02NbkkuTbKuqZyW5OMnWJJ3kpqq6prsfWo0DAQCAeTvozHMv+Py0eeT06AM0OSfJe6Z2H05yVFUdm+TMJNd394NTYL4+yVkr6z4AAKydkZnnVNURSW5K8o1J3t7d26vqJ5NcUlX/IckNSS7q7keSHJfk3pnmu6ey/ZUDPKFcuX3Xkuqft+3EOfUEgKUaOmGwux/r7lOTHJ/ktKr61iRvSvLNSb4zybOSvHGqXou9xQHKv0JVXVBVO6pqx549e0a6BwAAa2JJV9vo7oeT/HmSs7r7/mlpxiNJ3pXktKna7iQnzDQ7Psl9Byjf9zMu6+6t3b118+bNS+keAADM1cjVNjZX1VHT66cl+b4kH5/WMaeqKsnLk3xsanJNktdMV904Pclnuvv+JNclOaOqjq6qo5OcMZUBAMBhYWTN87FJrpjWPT8pydXd/YdV9WdVtTkLyzFuTvITU/1rk5ydZGeSLyR5bZJ094NV9ctJbpzqvbm7H1y9QwEAgPk6aHju7luTPH+R8hfvp34nuXA/+y5PcvkS+wgAAIcEdxgEAIBBwjMAAAwSngEAYJDwDAAAg4RnAAAYJDwDAMAg4RkAAAYJzwAAMEh4BgCAQcIzAAAMEp4BAGCQ8AwAAIOEZwAAGCQ8AwDAIOEZAAAGCc8AADBIeAYAgEHCMwAADBKeAQBgkPAMAACDhGcAABgkPAMAwCDhGQAABgnPAAAwSHgGAIBBwjMAAAzatN4dAGB9Xbl915LbnLftxDn0BODQZ+YZAAAGCc8AADBIeAYAgEHCMwAADBKeAQBg0EHDc1U9tao+UlW3VNVtVfVLU/nJVbW9qu6sqvdW1ZOn8qdM2zun/SfNvNebpvJPVNWZ8zooAACYh5GZ50eSvLi7vz3JqUnOqqrTk/xqkrd295YkDyV53VT/dUke6u5vTPLWqV6q6pQk5yZ5XpKzkvxGVR2xmgcDAADzdNDw3As+P20eOT06yYuTvG8qvyLJy6fX50zbmfa/pKpqKr+qux/p7ruT7Exy2qocBQAArIGhNc9VdURV3ZzkgSTXJ/nbJA9396NTld1JjpteH5fk3iSZ9n8mydfOli/SBgAADnlD4bm7H+vuU5Mcn4XZ4m9ZrNr0XPvZt7/yr1BVF1TVjqrasWfPnpHuAQDAmljS1Ta6++Ekf57k9CRHVdXe23sfn+S+6fXuJCckybT/a5I8OFu+SJvZz7isu7d299bNmzcvpXsAADBXI1fb2FxVR02vn5bk+5LckeQDSX5kqnZ+kvdPr6+ZtjPt/7Pu7qn83OlqHCcn2ZLkI6t1IAAAMG+bDl4lxya5YroyxpOSXN3df1hVtye5qqr+Y5K/TvLOqf47k/xWVe3MwozzuUnS3bdV1dVJbk/yaJILu/ux1T0cgI3nyu27llT/vG0nzqknABw0PHf3rUmev0j5XVnkahnd/X+TvGI/73VJkkuW3k0AAFh/7jAIAACDhGcAABgkPAMAwCDhGQAABgnPAAAwSHgGAIBBwjMAAAwSngEAYJDwDAAAg4RnAAAYJDwDAMAg4RkAAAYJzwAAMEh4BgCAQcIzAAAM2rTeHQA2liu371pS/fO2nTinngDA6jPzDAAAg4RnAAAYJDwDAMAg4RkAAAYJzwAAMEh4BgCAQcIzAAAMEp4BAGCQm6QAh5Wl3oQFAFaTmWcAABgkPAMAwCDLNgA2GEtbAObHzDMAAAwSngEAYJDwDAAAg4RnAAAYJDwDAMCgg4bnqjqhqj5QVXdU1W1V9VNT+S9W1Ser6ubpcfZMmzdV1c6q+kRVnTlTftZUtrOqLprPIQEAwHyMXKru0SRv6O6PVtUzk9xUVddP+97a3b82W7mqTklybpLnJXlukv9ZVd807X57kpcm2Z3kxqq6prtvX40DAQCAeTtoeO7u+5PcP73+XFXdkeS4AzQ5J8lV3f1IkrurameS06Z9O7v7riSpqqumusIzAACHhSWtea6qk5I8P8n2qej1VXVrVV1eVUdPZccluXem2e6pbH/lAABwWBgOz1X1jCS/m+Snu/uzSS5N8g1JTs3CzPSv7626SPM+QPm+n3NBVe2oqh179uwZ7R4AAMzdUHiuqiOzEJx/u7t/L0m6+1Pd/Vh3fynJO/LlpRm7k5ww0/z4JPcdoPwrdPdl3b21u7du3rx5qccDAABzc9A1z1VVSd6Z5I7ufstM+bHTeugk+eEkH5teX5Pkyqp6SxZOGNyS5CNZmHneUlUnJ/lkFk4qPG+1DgRgvVy5fdd6dwGANTJytY0XJnl1kr+pqpunsp9P8sqqOjULSy/uSfLjSdLdt1XV1Vk4EfDRJBd292NJUlWvT3JdkiOSXN7dt63isQAAwFyNXG3jQ1l8vfK1B2hzSZJLFim/9kDtAADgUDYy8wws01L/nH/ethPn1BMAYDW4PTcAAAwSngEAYJDwDAAAg4RnAAAYJDwDAMAg4RkAAAYJzwAAMEh4BgCAQcIzAAAMEp4BAGCQ8AwAAIOEZwAAGCQ8AwDAIOEZAAAGCc8AADBIeAYAgEHCMwAADBKeAQBg0Kb17gDwxHbl9l3r3QUAGGbmGQAABgnPAAAwyLIN4IAsqwCALzPzDAAAg4RnAAAYJDwDAMAg4RkAAAYJzwAAMEh4BgCAQcIzAAAMEp4BAGCQ8AwAAIMOGp6r6oSq+kBV3VFVt1XVT03lz6qq66vqzun56Km8quptVbWzqm6tqhfMvNf5U/07q+r8+R0WAACsvpGZ50eTvKG7vyXJ6UkurKpTklyU5Ibu3pLkhmk7SV6WZMv0uCDJpclC2E5ycZJtSU5LcvHewA0AAIeDg4bn7r6/uz86vf5ckjuSHJfknCRXTNWuSPLy6fU5Sd7TCz6c5KiqOjbJmUmu7+4Hu/uhJNcnOWtVjwYAAOZoSWueq+qkJM9Psj3Jc7r7/mQhYCd59lTtuCT3zjTbPZXtrxwAAA4Lw+G5qp6R5HeT/HR3f/ZAVRcp6wOU7/s5F1TVjqrasWfPntHuAQDA3A2F56o6MgvB+be7+/em4k9NyzEyPT8wle9OcsJM8+OT3HeA8q/Q3Zd199bu3rp58+alHAsAAMzVyNU2Ksk7k9zR3W+Z2XVNkr1XzDg/yftnyl8zXXXj9CSfmZZ1XJfkjKo6ejpR8IypDAAADgubBuq8MMmrk/xNVd08lf18kl9JcnVVvS7JriSvmPZdm+TsJDuTfCHJa5Okux+sql9OcuNU783d/eCqHAUAAKyBg4bn7v5QFl+vnCQvWaR+J7lwP+91eZLLl9JBAAA4VLjDIAAADBKeAQBgkPAMAACDRk4YBHhCuXL7rvXuAgCHKDPPAAAwSHgGAIBBwjMAAAwSngEAYJDwDAAAg4RnAAAYJDwDAMAg4RkAAAYJzwAAMEh4BgCAQcIzAAAMEp4BAGCQ8AwAAIOEZwAAGCQ8AwDAIOEZAAAGCc8AADBIeAYAgEHCMwAADBKeAQBgkPAMAACDNq13B4Avu3L7riXVP2/biXPqCQCwGOEZgCXzix7wRGXZBgAADBKeAQBgkPAMAACDhGcAABgkPAMAwKCDhuequryqHqiqj82U/WJVfbKqbp4eZ8/se1NV7ayqT1TVmTPlZ01lO6vqotU/FAAAmK+Rmed3JzlrkfK3dvep0+PaJKmqU5Kcm+R5U5vfqKojquqIJG9P8rIkpyR55VQXAAAOGwe9znN3f7CqThp8v3OSXNXdjyS5u6p2Jjlt2rezu+9Kkqq6aqp7+5J7DAAA62QlN0l5fVW9JsmOJG/o7oeSHJfkwzN1dk9lSXLvPuXbVvDZwDIt9eYWAMCXLfeEwUuTfEOSU5Pcn+TXp/JapG4foPxxquqCqtpRVTv27NmzzO4BAMDqW1Z47u5Pdfdj3f2lJO/Il5dm7E5ywkzV45Pcd4Dyxd77su7e2t1bN2/evJzuAQDAXCwrPFfVsTObP5xk75U4rklyblU9papOTrIlyUeS3JhkS1WdXFVPzsJJhdcsv9sAALD2Drrmuap+J8mLkhxTVbuTXJzkRVV1ahaWXtyT5MeTpLtvq6qrs3Ai4KNJLuzux6b3eX2S65IckeTy7r5t1Y8GAADmaORqG69cpPidB6h/SZJLFim/Nsm1S+odAAAcQtxhEAAABgnPAAAwSHgGAIBBwjMAAAwSngEAYJDwDAAAg4RnAAAYJDwDAMAg4RkAAAYJzwAAMEh4BgCAQcIzAAAMEp4BAGCQ8AwAAIOEZwAAGCQ8AwDAIOEZAAAGCc8AADBIeAYAgEHCMwAADBKeAQBgkPAMAACDhGcAABgkPAMAwKBN690BADa+K7fvWlL987adOKeeAKyMmWcAABgkPAMAwCDhGQAABgnPAAAwyAmDABxynGAIHKrMPAMAwCDhGQAABh00PFfV5VX1QFV9bKbsWVV1fVXdOT0fPZVXVb2tqnZW1a1V9YKZNudP9e+sqvPnczgAADA/IzPP705y1j5lFyW5obu3JLlh2k6SlyXZMj0uSHJpshC2k1ycZFuS05JcvDdwAwDA4eKg4bm7P5jkwX2Kz0lyxfT6iiQvnyl/Ty/4cJKjqurYJGcmub67H+zuh5Jcn8cHcgAAOKQt92obz+nu+5Oku++vqmdP5ccluXem3u6pbH/lwAos9YoEAMDKrPYJg7VIWR+g/PFvUHVBVe2oqh179uxZ1c4BAMBKLDc8f2pajpHp+YGpfHeSE2bqHZ/kvgOUP053X9bdW7t76+bNm5fZPQAAWH3LDc/XJNl7xYzzk7x/pvw101U3Tk/ymWl5x3VJzqiqo6cTBc+YygAA4LBx0DXPVfU7SV6U5Jiq2p2Fq2b8SpKrq+p1SXYlecVU/dokZyfZmeQLSV6bJN39YFX9cpIbp3pv7u59T0IEgGVxR0JgrRw0PHf3K/ez6yWL1O0kF+7nfS5PcvmSegcAAIcQdxgEAIBBwjMAAAwSngEAYJDwDAAAg4RnAAAYJDwDAMAg4RkAAAYJzwAAMEh4BgCAQcIzAAAMEp4BAGCQ8AwAAIOEZwAAGCQ8AwDAIOEZAAAGCc8AADBIeAYAgEHCMwAADBKeAQBgkPAMAACDhGcAABgkPAMAwKBN690BAFhrV27ftaT65207cU49AQ43Zp4BAGCQ8AwAAIOEZwAAGCQ8AwDAIOEZAAAGudrGfjgTGwCAfQnPbBhL/YUn8UsPALA0lm0AAMAg4RkAAAYJzwAAMGhFa56r6p4kn0vyWJJHu3trVT0ryXuTnJTkniQ/2t0PVVUl+a9Jzk7yhST/ors/upLPh5VyYigAsBSrccLg93b3p2e2L0pyQ3f/SlVdNG2/McnLkmyZHtuSXDo9AwCwAW3Ek/nnsWzjnCRXTK+vSPLymfL39IIPJzmqqo6dw+cDAMBcrDQ8d5I/raqbquqCqew53X1/kkzPz57Kj0ty70zb3VMZAAAcFla6bOOF3X1fVT07yfVV9fED1K1FyvpxlRZC+AVJcuKJh/a0PQAATywrmnnu7vum5weS/H6S05J8au9yjOn5gan67iQnzDQ/Psl9i7znZd29tbu3bt68eSXdAwCAVbXs8FxVT6+qZ+59neSMJB9Lck2S86dq5yd5//T6miSvqQWnJ/nM3uUdAABwOFjJso3nJPn9hSvQZVOSK7v7T6rqxiRXV9XrkuxK8oqp/rVZuEzdzixcqu61K/hsAHhCc6lNWB/LDs/dfVeSb1+k/O+TvGSR8k5y4XI/DwAA1ps7DAIAwKDVuEkKALBCy7mZBLD2zDwDAMAg4RkAAAYJzwAAMEh4BgCAQU4YZM24JikAcLgTnjlkOfMcADjUWLYBAACDhGcAABhk2QbLZlkFAPBEIzzDEviFAWD1OJGcw5FlGwAAMEh4BgCAQcIzAAAMEp4BAGCQEwYBgMdZzgnSTujjiUB45v9zJQmA1eP/VNiYLNsAAIBBZp4B4AnATPjqs7TlicnMMwAADBKeAQBgkPAMAACDrHkGAFaFddU8EZh5BgCAQWaeNzAzAABsJEv9uebKFsyD8AwAbEjCNvMgPK+SeX9BzSIDAKw/4XmdCMMAhw//ZwN7Cc8AAFmbX5IsJTn8udoGAAAMMvMMAHCIMlN96FnzmeeqOquqPlFVO6vqorX+fAAAWK41nXmuqiOSvD3JS5PsTnJjVV3T3bevZT8AADaiea/bNrO99jPPpyXZ2d13dfcXk1yV5Jw17gMAACzLWq95Pi7JvTPbu5NsW+M+AACwDC7buPbhuRYp66+oUHVBkgumzc9X1Sfm3qu1dUyST693J1h1xnXjMaYbjzHdeIzpBvSq9RvXrxuptNbheXeSE2a2j09y32yF7r4syWVr2am1VFU7unvreveD1WVcNx5juvEY043HmG5Mh/q4rvWa5xuTbKmqk6vqyUnOTXLNGvcBAACWZU1nnrv70ap6fZLrkhyR5PLuvm0t+wAAAMu15jdJ6e5rk1y71p97CNmwS1Ke4IzrxmNMNx5juvEY043pkB7X6u6D1wIAANb+DoMAAHC4Ep5XQVUdUVV/XVV/OG2fXFXbq+rOqnrvdHLkYu2+rar+qqpuq6q/qaqnTuV/Pt3C/Obp8ey1PB6WN6ZV9aqZMbu5qr5UVadO+75jGuOdVfW2qlrsso3M0RzG1Pd0nS1zTI+sqium7+MdVfWmmX1nTWO6s6ouWstj4cvmMK73TOU3V9WOtTwWFixzTJ9cVe+axu6WqnrRzL51/ZkqPK+On0pyx8z2ryZ5a3dvSfJQktft26CqNiX5H0l+orufl+RFSf5xpsqruvvU6fHA3HrO/ix5TLv7t/eOWZJXJ7mnu2+edl+aheuXb5keZ82z8yxqtcc08T1db0se0ySvSPKU7v6nSb4jyY9X1UlVdUSStyd5WZJTkryyqk6Za+/Zn1Ub15n93zt9Tw/Zy59tcMsZ03+ZJNOYvjTJr1fV3ty6rj9ThecVqqrjk3x/kt+ctivJi5O8b6pyRZKXL9L0jCS3dvctSdLdf9/dj82/xxzMCsZ01iuT/M7U/tgkX93df9ULJxm8Z6A9q2i1x5T1t4Ix7SRPnyYwnpbki0k+m+S0JDu7+67u/mKSq5KcM9eD4HHmMK6ssxWM6SlJbkiSaXLi4SRbD4WfqcLzyv2XJD+X5EvT9tcmebi7H522d2fhtuT7+qYkXVXXVdVHq+rn9tn/rulPTP/en/jX3HLHdNaP5ctB67ipzV4j7Vldqz2me/merp/ljun7kvxDkvuT7Erya9394FT33pl6vqfrY7XHNVkI1n9aVTfVwl2MWVvLHdNbkpxTVZuq6uQs/EXhhBwCP1OF5xWoqh9I8kB33zRbvEjVxS5psinJP0/yqun5h6vqJdO+V01/pviu6fHq1es1B7LCMd37HtuSfKG7P7ac9qyuOY1p4nu6blY4pqcleSzJc5OcnOQNVfX1S2jPnMxpXJPkhd39giwsybmwqr57FbvNAaxwTC/PQjDekYUA/pdJHl1C+7lZ8+s8bzAvTPJDVXV2kqcm+eosDPBRVbVp+q3qcbcgn+xO8r+6+9NJUlXXJnlBkhu6+5NJ0t2fq6ors/CfwnvmfjQkKxvTvc7NV85Q7p7a7HWw9qyueYxpfE/X1UrG9Lwkf9Ld/5jkgar630m2ZmHW+YSZer6na28e43pXd9+XLPzpv6p+Pwvf1Q/O/3DICsZ02vcze7er6i+T3JmFNdLr+jPVzPMKdPebuvv47j4pCz9c/6y7X5XkA0l+ZKp2fpL3L9L8uiTfVlVfNa3R+p4kt09/njgmWTh7OMkPJPnYIu2ZgxWOaaaTGV6RhfWSe9/z/iSfq6rTpz/tv2Z/7Vl98xhT39P1tcIx3ZXkxbXg6UlOT/LxJDcm2TJdBeDJ0/teM+dDYcY8xrWqnl5Vz0ySqfyM+K6umZWM6ZSPnj69fmmSR7v79kPhZ6rwPB9vTPJvq2pnFtb2vDNJquqHqurNSdLdDyV5Sxb+w745yUe7+4+SPCXJdVV161T+ySTvWPtDYB8HHdPJdyfZ3d137dP+J7NwssTOJH+b5I/n32UOYiVj6nt6aBoZ07cneUYWAtSNSd7V3bdOs1yvz8LExh1Jru7u29b6AFjUssc1yXOSfKiqbknykSR/1N1/stYHwOOMjOmzk3y0qu6Y6s8ujVvXn6nuMAgAAIPMPAMAwCDhGQAABgnPAAAwSHgGAIBBwjMAAAwSngHWSVXdU1Xft4x231VVn1jFfryoqnYfvCYAwjPAIa6quqq+ce92d/9Fd/+Tmf3LCuEALJ3wDAAAg4RngHVWVadV1V9V1cNVdX9V/bfpFtGpqg9O1W6pqs9X1Y/NLrOoqt9KcmKSP5j2/9xiyzBmZ6er6mlV9e6qeqiqbk/ynfvUfW5V/W5V7amqu6vq38z73wDgcCE8A6y/x5L8TJJjkvyzJC9J8q+SpLu/e6rz7d39jO5+72zD7n51kl1JfnDa/58HPu/iJN8wPc5Mcv7eHVX1pCR/kOSWJMdNffnpqjpz+YcHsHEIzwDrrLtv6u4Pd/ej3X1Pkv+e5Hvm+JE/muSS7n6wu+9N8raZfd+ZZHN3v7m7v9jddyV5R5Jz59gfgMPGpvXuAMATXVV9U5K3JNma5Kuy8H/zTXP8yOcmuXdm++9mXn9dkudW1cMzZUck+Ys59gfgsGHmGWD9XZrk40m2dPdXJ/n5JLWE9r3P9j9kIYQnSarqiCSbZ/bfn+SEme0TZ17fm+Tu7j5q5vHM7j57Cf0B2LCEZ4D198wkn03y+ar65iQ/uc/+TyX5+gO033f//0ny1Kr6/qo6MskvJHnKzP6rk7ypqo6uquOT/OuZfR9J8tmqeuN0YuERVfWtVfUVJxUCPFEJzwDr72eTnJfkc1lYX/zeffb/YpIrpqtx/Ogi7f9Tkl+Y9v9sd38mCycc/maST2ZhJnr26hu/lIWlGncn+dMkv7V3R3c/luQHk5w67f/09D5fs8JjBNgQqnvfv/YBAACLMfMMAACDhGcAABgkPAMAwCDhGQAABgnPAAAwSHgGAIBBwjMAAAwSngEAYJDwDAAAg/4fOJNYoX+1YoMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4bcd4c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.loc[train['latitude']<40.6]=40.6\n",
    "train.loc[train['latitude']>40.9]=40.9\n",
    "#先看纬度的情况 \n",
    "plt.figure(figsize=(12,6))\n",
    "sns.distplot(train.latitude.values, bins=50, kde=False)\n",
    "plt.xlabel('latitude', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "再来查看经度分布情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4bc8a780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "llimit = np.percentile(train.longitude.values, 1)\n",
    "ulimit = np.percentile(train.longitude.values, 99)\n",
    "train.loc[train['longitude']<-74.02]=-74.02\n",
    "train.loc[train['longitude']>-73.8 ]=-73.8 \n",
    "\n",
    "plt.figure(figsize=(12,8))\n",
    "sns.distplot(train.longitude.values, bins=50, kde=False)\n",
    "plt.xlabel('longitude', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由此可知经度大部分集中在-73.8至-74.02之间。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_location = train.loc[:,[ 'latitude', 'longitude']]\n",
    "# Clustering\n",
    "kmeans_cluster = KMeans(n_clusters=20)\n",
    "res = kmeans_cluster.fit(train_location)\n",
    "res = kmeans_cluster.predict(train_location)\n",
    "train['cenroid'] = res\n",
    "\n",
    "# L1 distance\n",
    "center = [ train_location['latitude'].mean(), train_location['longitude'].mean()]\n",
    "train['distance'] = abs(train['latitude'] - center[0]) + abs(train['longitude'] - center[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看房屋出租信息发布时间"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2dd42438>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#训练集中的发布时间\n",
    "train['created'] = pd.to_datetime(train['created'])\n",
    "train['date_created'] = train['created'].dt.date\n",
    "date_count = train['date_created'].value_counts()\n",
    "plt.figure(figsize=(18,6))\n",
    "ax = plt.subplot(111)\n",
    "ax.bar(date_count.index,date_count.values,alpha = 0.8)\n",
    "ax.xaxis_date()\n",
    "plt.xticks(rotation='vertical')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4af094a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#测试机上的发布时间\n",
    "test['created']= pd.to_datetime(test['created'])\n",
    "test['date_created'] = test['created'].dt.date\n",
    "test_date_count = test['date_created'].value_counts()\n",
    "plt.figure(figsize=(16,6))\n",
    "ax = plt.subplot(111)\n",
    "ax.bar(test_date_count.index,test_date_count.values,alpha = 0.8)\n",
    "ax.xaxis_date()\n",
    "plt.xticks(rotation = 'vertical')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由以上两张图可以看出，训练集与测试集中的发布时间分布几乎相同。\n",
    "再来查看一天24小时内的发布情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2be71c88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train['hour_created'] = pd.to_datetime(train['created']).dt.hour\n",
    "hour_count = train['hour_created'].value_counts()\n",
    "plt.figure(figsize=(16,6))\n",
    "sns.barplot(hour_count.index,hour_count.values,alpha = 0.8)\n",
    "plt.xlabel('hour',fontsize = 12)\n",
    "plt.ylabel('Number of Occurrences',fontsize = 12)\n",
    "plt.xticks(rotation = 'vertical')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出来,大部分发布的信息是在凌晨一点至早上七点之间."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看地址信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7kAAAF6CAYAAADcRJ/zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3XuYpWdZJ+rfQ8JBORSHoEMSOoHpyBBPqE2DbHRQ4jYoTZANSkQFjOlBhxHnkkE0IiATRWc7AhJkWsEgp3BQMY0ZgchAHEXCQWSDGWZCJKZJIECgCMjBkGf/sb4li6Kqu6q7qlavr+/7uvrqWu93er613uTqX73v967q7gAAAMAY3GLeBQAAAMBmEXIBAAAYDSEXAACA0RByAQAAGA0hFwAAgNEQcgEAABgNIRcAAIDREHIBAAAYDSEXAACA0RByAQAAGI3j513AZjnhhBP61FNPnXcZAAAAbIF3vetdH+/uux5qv6M25FbVbZNcluTp3f36Q+1/6qmn5p3vfOfWFwYAAMC2q6qr17Pftk1XrqoXV9X1VfW+Fe1nVtUHqurKqnrqzKZfSPLq7aoPAACAxbedz+RemOTM2YaqOi7JBUkekuT0JGdX1elVdUaSv0/y0W2sDwAAgAW3bdOVu/uyqjp1RfPuJFd291VJUlUXJTkrye2S3DaT4Pu5qrqku2/erloBAABYTPN+JvekJNfMvD6Q5H7d/cQkqarHJfn4WgG3qvYm2ZskO3bs2NpKAQAAOOrN+yuEapW2/pcfui882KJT3b2vu3d196673vWQi2wBAAAwcvMOuQeS3H3m9clJrp1TLQAAACy4eYfcdyQ5raruUVW3SvLoJBdv5ARVtaeq9i0vL29JgQAAACyO7fwKoVcmeVuSe1XVgao6p7tvSvLEJG9IckWSV3f3+zdy3u7e3917l5aWNr9oAAAAFsp2rq589hrtlyS5ZLvqAAAAYLzmPV0ZAAAANs3Ch1zP5AIAADC18CHXM7kAAABMbdszuSS7z7/0oNsvP++MbaoEAABgnBZ+JBcAAACmhFwAAABGY+FDroWnAAAAmFr4kGvhKQAAAKYWPuQCAADAlJALAADAaAi5AAAAjMbCh1wLTwEAADC18CHXwlMAAABMLXzIBQAAgCkhFwAAgNEQcgEAABgNIRcAAIDRWPiQa3VlAAAAphY+5FpdGQAAgKmFD7kAAAAwJeQCAAAwGkIuAAAAoyHkAgAAMBpCLgAAAKOx8CHXVwgBAAAwtfAh11cIAQAAMLXwIRcAAACmhFwAAABGQ8gFAABgNIRcAAAARkPIBQAAYDSEXAAAAEZDyAUAAGA0hFwAAABGY+FDblXtqap9y8vL8y4FAACAOVv4kNvd+7t779LS0rxLAQAAYM4WPuQCAADAlJALAADAaAi5AAAAjIaQCwAAwGgIuQAAAIyGkAsAAMBoCLkAAACMhpALAADAaAi5AAAAjIaQCwAAwGgIuQAAAIzGwofcqtpTVfuWl5fnXQoAAABztvAht7v3d/fepaWleZcCAADAnC18yAUAAIApIRcAAIDREHIBAAAYDSEXAACA0RByAQAAGA0hFwAAgNEQcgEAABgNIRcAAIDREHIBAAAYDSEXAACA0RByAQAAGA0hFwAAgNEQcgEAABgNIRcAAIDREHIBAAAYDSEXAACA0RByAQAAGI2jMuRW1b2r6oVV9dqq+ul51wMAAMBi2LaQW1Uvrqrrq+p9K9rPrKoPVNWVVfXUJOnuK7r7CUl+OMmu7aoRAACAxbadI7kXJjlztqGqjktyQZKHJDk9ydlVdfqw7WFJ/meSv9jGGgEAAFhg2xZyu/uyJDesaN6d5Mruvqq7v5jkoiRnDftf3N0PSPKY7aoRAACAxXb8nK9/UpJrZl4fSHK/qnpQkkckuXWSS9Y6uKr2JtmbJDt27Ni6KgEAAFgI8w65tUpbd/dbkrzlUAd3974k+5Jk165dvamVAQAAsHDmvbrygSR3n3l9cpJr51QLAAAAC27eIfcdSU6rqntU1a2SPDrJxXOuCQAAgAW1nV8h9Mokb0tyr6o6UFXndPdNSZ6Y5A1Jrkjy6u5+/wbPu6eq9i0vL29+0QAAACyUbXsmt7vPXqP9khxkcal1nHd/kv27du0693DPAQAAwDjMe7oyAAAAbBohFwAAgNFY+JDrmVwAAACmFj7kdvf+7t67tLQ071IAAACYs4UPuQAAADAl5AIAADAaCx9yPZMLAADA1MKHXM/kAgAAMLXwIRcAAACmhFwAAABGQ8gFAABgNBY+5Fp4CgAAgKmFD7kWngIAAGBq4UMuAAAATAm5AAAAjIaQCwAAwGgIuQAAAIzGwodcqysDAAAwtfAh1+rKAAAATC18yAUAAIApIRcAAIDREHIBAAAYDSEXAACA0RByAQAAGI3j510AX7b7/EsPuv3y887YpkoAAAAW08KP5PqeXAAAAKYWPuT6nlwAAACmFj7kAgAAwJSQCwAAwGgIuQAAAIyGkAsAAMBoCLkAAACMhpALAADAaAi5AAAAjMbCh9yq2lNV+5aXl+ddCgAAAHO28CG3u/d3996lpaV5lwIAAMCcLXzIBQAAgCkhFwAAgNEQcgEAABgNIRcAAIDREHIBAAAYjePnXQDrt/v8Sw+6/fLzztimSgAAAI5ORnIBAAAYDSEXAACA0RByAQAAGA0hFwAAgNEQcgEAABiNDYXcqrpdVZ1cVbfbqoIAAADgcB0y5FbVN1XV71TVVUmWk/xjkuWq+mBVPb+qvnnLqzx4fXuqat/y8vI8ywAAAOAocNCQW1WvTPKKJNcl+bEkJyS51fD3jyf5cJKXV9VFW1znmrp7f3fvXVpamlcJAAAAHCWOP8T2V3T3/lXaP5nkr4c/v15VD930ygAAAGCDDjqSOxtwq+p+q+1TVbu7+/WbXRgAAABs1EYWnnrTGu1/vhmFAAAAwJE61HTlVNUtktTkx6rh56l/neSmLaoNAAAANuSQITeTENszP8+6Ocn5m1oRAAAAHKb1hNx7ZDJ6+9Yk3z3T3kk+1t2f24rCAAAAYKMOGXK7++rhx1O2uBYAAAA4IusZyU2SVNWdkzw5yX2S3G52W3d/96oHAQAAwDZad8hN8ookt07y6iT/tDXlAAAAwOHbSMh9QJK7dvcXtqoYAAAAOBIb+Z7c9yY5easKAQAAgCO1kZHcNyf586r6gyQfmd3Q3S/e1Ko4LLvPv/Sg2y8/74xtqgQAAGA+NhJyvyvJgSTft6K9kwi5AAAAzN26Q253f89WFgIAAABHaiNfIbTm87vdffPmlAMAAACHbyPTlW/KZGryao7bhFoAAADgiGwk5N5jxeu7JXlqkv2bVw4AAAAcvo08k3v1iqarq+qxSd6R5EWbWlWSqnp4kh9M8nVJLujuN272NQAAABiXjXxP7mrukOSu6925ql5cVddX1ftWtJ9ZVR+oqiur6qlJ0t2v6+5zkzwuyY8cYZ0AAAAcAzay8NRL85XP5H5tku9O8rINXO/CJM9P8ocz5z0uyQWZfDXRgSTvqKqLu/vvh11+edgOAAAAB7WRZ3KvXPH6s0le2N2XrvcE3X1ZVZ26onl3kiu7+6okqaqLkpxVVVckeXaS/97d795AnQAAAByjNvJM7jO3qIaTklwz8/pAkvsl+Q9JzkiyVFU7u/uFKw+sqr1J9ibJjh07tqg8AAAAFsVGRnJTVY9P8uOZBNMPJ3lpd//BEdZQq7R1dz8vyfMOdmB370uyL0l27dq11tcbAQAAcIzYyDO55yX5iSS/leTqJKckeUpVndjd5x9BDQeS3H3m9clJrj2C8wEAAHCM2shI7k8ledDsVwlV1RuSXJbkSELuO5KcVlX3yGR0+NFJfnS9B1fVniR7du7ceQQlAAAAMAYbCbm3TfKxFW2fSPI16z1BVb0yyYOSnFBVB5I8vbtfVFVPTPKGJMcleXF3v3+95+zu/Un279q169z1HnOs2n3+wdcIu/y8M7apEgAAgK2xkZD750lePnyP7T9mMl35/EzC6bp099lrtF+S5JIN1AIAAABf5RYb2PeJSW5M8ndJPpPkPUn+KZNVkAEAAGDuNvIVQp9O8hNV9bgkJyT5eHffvFWFrZdncjeP6cwAAMCiO+RIblV9Y1U9Zfq6u2/u7uu7++aqekpV3XtrSzy47t7f3XuXlpbmWQYAAABHgfVMV/6VJNesse3qYTsAAADM3XpC7ncm+ZM1tr0uyQM3rxwAAAA4fOsJuXdO8qU1tt2c5E6bVw4AAAAcvvWE3H9I8oA1tj0gyYc2rZrDUFV7qmrf8vLyPMsAAADgKLCekPt7SX6/qr5jtrGqvj3JviT/bSsKWy8LTwEAADB1yK8Q6u7nVdXOJG+vqmuSXJfkbklOTvKC7v6dLa4RAAAA1mVd35Pb3T9bVc9L8uAkd0nyiSR/0d1XbmVxAAAAsBHrCrlJMgRaoRYAAICj1kGfya2qP66q+x5in/tW1R9vblnrZ+EpAAAApg41kvvCJC+oqjskeWuSDyS5Mcntk3xDkgcl+VSSX97CGg+qu/cn2b9r165z51UDAAAAR4eDhtzufmOSN1bVriQPSXK/JHdM8skk703y6O7+2y2vEgAAANZhvQtPvTPJO7e4FgAAADgi6154qqruucamLyS5rrtv3pySAAAA4PCsO+RmsrJyJ6nhdc9su7mqLk7yM9390c0qDgAAADbioKsrr3BukpcnOS3JbZLcK8nLkvxMkm/OJDBfsNkFHorVlQEAAJjaSMh9ZpK93f3B7v7i8L25P53kad39v5I8LpPVlrdVd+/v7r1LS0vbfWkAAACOMhsJubdIcuqKth1Jjht+/kw2Nv0ZAAAANtVGQulzkry5qv4gyTVJTk7y+KE9SX4wyds2tzwAAABYv3WH3O7+zap6b5JHJfn2JNclOae7/3zY/rokr9uSKgEAAGAdNjS9eAi0f75FtQAAAMARWfczuVV1y6p6ZlVdVVWfH/5+ZlXdaisLBAAAgPXayEjubybZneQJSa5OckqSpyW5Q5L/uPmlrU9V7UmyZ+fOnfMq4Zix+/xLD7r98vPO2JZzAAAArGUjqys/KsnDuvuN3f2B7n5jkh9K8sNbU9r6+AohAAAApjYyklsbbOcYc6hRWgAAgK22kZHc1yTZX1XfX1X3rqozM1lN+TVbUxoAAABszEZGcp+S5JeTXJDkxCQfTnJRkmdtQV0AAACwYQcNuVX1vSua3jL8qSQ9tD0wyZs3uzAAAADYqEON5L5ojfZpwJ2G3XtuWkUAAABwmA4acrv7HttVCAAAABypjSw8BQAAAEc1IRcAAIDRWPiQW1V7qmrf8vLyvEsBAABgzhY+5Hb3/u7eu7S0NO9SAAAAmLOFD7kAAAAwdaivEIKjyu7zLz3o9svPO2ObKgEAAI5GRnIBAAAYDSEXAACA0RByAQAAGA3P5HJUOdQztwAAAAdjJBcAAIDREHIBAAAYDSEXAACA0RByAQAAGA0hFwAAgNFY+JBbVXuqat/y8vK8SwEAAGDOFj7kdvf+7t67tLQ071IAAACYM9+TCzMO9T29l593xjZVAgAAHI6FH8kFAACAKSEXAACA0RByAQAAGA0hFwAAgNEQcgEAABgNqyvDJrI6MwAAzJeRXAAAAEbDSC5swKFGagEAgPkykgsAAMBoGMllVIy0AgDAsc1ILgAAAKMh5AIAADAaQi4AAACjIeQCAAAwGhaegm20noWxLj/vjG2oBAAAxslILgAAAKNxVIbcqrpnVb2oql4771oAAABYHNs2XbmqXpzkoUmu7+5vmmk/M8lzkxyX5Pe7+9ndfVWSc4RcjkWHmtJsOjMAAKxtO0dyL0xy5mxDVR2X5IIkD0lyepKzq+r0bawJAACAEdm2kNvdlyW5YUXz7iRXdvdV3f3FJBclOWu7agIAAGBc5r268klJrpl5fSDJ/arqLknOT/JtVfWL3f3rqx1cVXuT7E2SHTt2bHWtcFQ40unMpkMDADBm8w65tUpbd/cnkjzhUAd3974k+5Jk165dvcm1AQAAsGDmvbrygSR3n3l9cpJr51QLAAAAC27eIfcdSU6rqntU1a2SPDrJxXOuCQAAgAW1bSG3ql6Z5G1J7lVVB6rqnO6+KckTk7whyRVJXt3d79/gefdU1b7l5eXNLxoAAICFsm3P5Hb32Wu0X5LkkiM47/4k+3ft2nXu4Z4DAACAcZj3dGUAAADYNEIuAAAAo7HwIdczuQAAAEwtfMjt7v3dvXdpaWnepQAAADBnCx9yAQAAYErIBQAAYDQWPuR6JhcAAICphQ+5nskFAABgauFDLgAAAEwJuQAAAIyGkAsAAMBoHD/vAo5UVe1Jsmfnzp3zLgVIsvv8S4/4HJefd8YmVAIAwLFo4UdyLTwFAADA1MKHXAAAAJgScgEAABgNIRcAAIDREHIBAAAYDasrw8gc6erGhzreysdHznsMALB1Fn4k1+rKAAAATC18yAUAAIApIRcAAIDREHIBAAAYDSEXAACA0RByAQAAGA0hFwAAgNHwPbnAhhzp9/BuRw2+Z/bIbfV77DMEALbKwo/k+p5cAAAAphY+5AIAAMCUkAsAAMBoCLkAAACMhpALAADAaAi5AAAAjIaQCwAAwGgIuQAAAIzG8fMu4EhV1Z4ke3bu3DnvUoBNsvv8S+ddwkEd7fUxcajP6fLzztimSgCA7bTwI7ndvb+79y4tLc27FAAAAOZs4UMuAAAATAm5AAAAjIaQCwAAwGgIuQAAAIyGkAsAAMBoCLkAAACMhpALAADAaAi5AAAAjIaQCwAAwGgIuQAAAIyGkAsAAMBoCLkAAACMxvHzLuBIVdWeJHt27tw571KAo8Tu8y896PbLzztjmyo5PIeqPzn674FDW/R+mozjHgAYn4Ufye3u/d29d2lpad6lAAAAMGcLH3IBAABgSsgFAABgNIRcAAAARkPIBQAAYDSEXAAAAEZDyAUAAGA0hFwAAABGQ8gFAABgNIRcAAAARkPIBQAAYDSEXAAAAEZDyAUAAGA0hFwAAABGQ8gFAABgNIRcAAAARkPIBQAAYDSEXAAAAEbj+HkXsJqqum2SFyT5YpK3dPfL51wSAAAAC2DbRnKr6sVVdX1VvW9F+5lV9YGqurKqnjo0PyLJa7v73CQP264aAQAAWGzbOV35wiRnzjZU1XFJLkjykCSnJzm7qk5PcnKSa4bdvrSNNQIAALDAti3kdvdlSW5Y0bw7yZXdfVV3fzHJRUnOSnIgk6C7rTUCAACw2Ob9TO5J+fKIbTIJt/dL8rwkz6+qH0yyf62Dq2pvkr1JsmPHji0sEziW7D7/0nmXcEhHWuPl550x1+tvxvnnfQ9Hev3tcKh73Op72Orrz/v+tsOxcI9b7Wh4D4+0hqPhHlh8x1I/mnfIrVXaurs/m+Txhzq4u/cl2Zcku3bt6k2uDQAAgAUz76nAB5Lcfeb1yUmunVMtAAAALLh5h9x3JDmtqu5RVbdK8ugkF2/kBFW1p6r2LS8vb0mBAAAALI7t/AqhVyZ5W5J7VdWBqjqnu29K8sQkb0hyRZJXd/f7N3Le7t7f3XuXlpY2v2gAAAAWyrY9k9vdZ6/RfkmSS7arDgAAAMZr3tOVAQAAYNMsfMj1TC4AAABTCx9yPZMLAADA1MKHXAAAAJgScgEAABgNIRcAAIDRWPiQa+EpAAAAphY+5Fp4CgAAgKmFD7kAAAAwVd097xo2RVV9LMnV865jDSck+fi8i4AtpI9zLNDPORbo5xwL9PPFdUp33/VQO40m5B7Nquqd3b1r3nXAVtHHORbo5xwL9HOOBfr5+JmuDAAAwGgIuQAAAIyGkLs99s27ANhi+jjHAv2cY4F+zrFAPx85z+QCAAAwGkZyAQAAGA0hdwtV1ZlV9YGqurKqnjrveuBwVdWLq+r6qnrfTNudq+pNVfV/hr/vNLRXVT1v6Pfvrapvn1/lsH5Vdfeq+h9VdUVVvb+qnjS06+uMQlXdpqour6q/G/r4M4f2e1TV24c+/qqqutXQfuvh9ZXD9lPnWT9sRFUdV1V/W1WvH17r58cQIXeLVNVxSS5I8pAkpyc5u6pOn29VcNguTHLmiranJvmL7j4tyV8Mr5NJnz9t+LM3ye9uU41wpG5K8vPdfe8k90/y74f/b+vrjMUXknxvd39rkvskObOq7p/kN5L89tDHP5nknGH/c5J8srt3JvntYT9YFE9KcsXMa/38GCLkbp3dSa7s7qu6+4tJLkpy1pxrgsPS3ZcluWFF81lJXjL8/JIkD59p/8Oe+Jskd6yqu21PpXD4uvu67n738PONmfzj6KTo64zE0Fc/M7y85fCnk3xvktcO7Sv7+LTvvzbJg6uqtqlcOGxVdXKSH0zy+8Prin5+TBFyt85JSa6ZeX1gaIOx+Pruvi6ZhIMkXze06/ssvGG62rcleXv0dUZkmML5niTXJ3lTkg8m+VR33zTsMtuP/6WPD9uXk9xleyuGw/KcJE9JcvPw+i7Rz48pQu7WWe03QJay5lig77PQqup2Sf4oyc9196cPtusqbfo6R7Xu/lJ33yfJyZnMOrv3arsNf+vjLJyqemiS67v7XbPNq+yqn4+YkLt1DiS5+8zrk5NcO6daYCt8dDo1c/j7+qFd32dhVdUtMwm4L+/uPx6a9XVGp7s/leQtmTx/fseqOn7YNNuP/6WPD9uX8tWPrsDR5v9K8rCq+lAmjwt+byYju/r5MUTI3TrvSHLasJLbrZI8OsnFc64JNtPFSR47/PzYJH860/4Tw8qz90+yPJ3qCUez4RmsFyW5orv/68wmfZ1RqKq7VtUdh5+/JskZmTx7/j+SPHLYbWUfn/b9RyZ5c3cb4eKo1t2/2N0nd/epmfz7+83d/Zjo58eU8hlunar6gUx+c3Rckhd39/lzLgkOS1W9MsmDkpyQ5KNJnp7kdUlenWRHkn9M8qjuvmEICs/PZDXmf0ry+O5+5zzqho2oqgcm+csk/1++/BzXL2XyXK6+zsKrqm/JZIGd4zIZ6Hh1d/9qVd0zkxGvOyf52yQ/1t1fqKrbJHlpJs+n35Dk0d191Xyqh42rqgcleXJ3P1Q/P7YIuQAAAIyG6coAAACMhpALAADAaAi5AAAAjIaQCwAAwGgIuQAAAIyGkAvAQVXVhVX1n+d07aqqP6iqT1bV5es85oVV9bStrm0jZt/DqvquqvrAJpzzQ1V1xpFXd+Sq6tSq6qo6fo3tz6iql213XceCo6kfABwthFyABTP8o/ajVXXbmbafqqq3zLGsrfLAJN+X5OTu3r1yY1U9rqr+52xbdz+hu5+1XQVuVHf/ZXffa951AMBYCbkAi+n4JE+adxEbVVXHbfCQU5J8qLs/uxX1MH9rjf4ei7wXAJtDyAVYTP8lyZOr6o4rN6w2dbSq3lJVPzX8/Liq+quq+u2q+lRVXVVVDxjar6mq66vqsStOe0JVvamqbqyqt1bVKTPn/jfDthuq6gNV9cMz2y6sqt+tqkuq6rNJvmeVek+sqouH46+sqnOH9nOS/H6S76yqz1TVM1ccd+8kL5zZ/qmZa06nBj+oqg5U1VOG+7quqh5eVT9QVf97uOYvzZzzFlX11Kr6YFV9oqpeXVV3HrbdpqpeNrR/qqreUVVfv9qHU1XfVlXvHt6vVyW5zcy2B1XVgZnXv1BVHx72/UBVPXhof0ZVvbaqXjVse3dVfesa19tdVW8b6rquqp5fVbcatl1QVb+1Yv/9VfVzq51rZp/p+3BjVf19Vf3QzLbjqur/raqPV9VVSX5wxbH3GPrJjVX1piQnzGyb9s9zquofk7x5aL9/Vf31cA9/V1UPmjnmcUM/vbGq/qGqHjO07xyuszzU8qqD3M9rquojw76XVdU3zmy7sCbT3Nfq411VPzvU8PGq+i9VdYuZ7T9ZVVfUZFr9G1Yc+9ya/Hf16ap6V1V918y26Wf8sqr6dJLHHawPDsf8eFVdPWw772CfIcCxSsgFWEzvTPKWJE8+zOPvl+S9Se6S5BVJLkpy3yQ7k/xYkudX1e1m9n9MkmdlElbek+TlSVKTKdNvGs7xdUnOTvKC2QCR5EeTnJ/k9km+Ymrx4JVJDiQ5Mckjk/xaVT24u1+U5AlJ3tbdt+vup88e1N1XrNj+VYF/8K8yCZknJfmVJL833ON3JPmuJL9SVfcc9v3ZJA9P8m+Hej6Z5IJh22OTLCW5+/C+PSHJ51ZebAiXr0vy0iR3TvKaJP/PaoVV1b2SPDHJfbv79km+P8mHZnY5azj+zpm8x6+rqluucqovJfmPmXw+35nkwUl+Ztj2kiRnT0NZVZ0wbH/lajXN+GAm789SkmcmeVlV3W3Ydm6Shyb5tiS7MvncZr0iybuGep6VyXu30r9Ncu8k319VJyX5syT/ebjXJyf5o6q669DHnpfkIcN79IBM+mCGc78xyZ2SnJzkdw5yP/89yWmZ9NN3Z+jDM1bt4zN+aLjXb8/kc/nJJKmqhyf5pSSPSHLXJH+Zr3xv35HkPvnyZ/iaqrrNzPazkrw2yR2Ha67ZB6vq9CS/m+THh213Ge4bgBlCLsDi+pUk/6Gq7noYx/5Dd/9Bd38pyasyCW6/2t1f6O43JvliJoF36s+6+7Lu/kKS8zIZPb17JkHnQ8O5burudyf5o3xl6PnT7v6r7r65uz8/W8Rwjgcm+YXu/nx3vyeT0dsfP4x7Wss/Jzm/u/85kzB/QpLndveN3f3+JO9P8i3Dvv8uyXndfWC412ckeWRNRsX/OZNQsbO7v9Td7+ruT69yvfsnuWWS53T3P3f3azMJOqv5UpJbJzm9qm7Z3R/q7g/ObH9Xd792qP2/ZhLW77/yJEMtfzN8Bh9K8t8yCUnp7suTLGcSbJPk0Une0t0fPdib1t2v6e5rh8/tVUn+T5Lpc9E/PNzfNd19Q5Jfnx5XVTsy+YXJ04b+dFmS/atc4hnd/dnu/lwmv3S4pLsvGa73pkx+kfMDw743J/mmqvqa7r5u+NySyWdySpITh/6z2i9Rpvfz4uEzn36u31pVSzO7rNXHp36ju2/o7n9M8pxMfqGTTPrMr3f3Fd19U5JfS3Kf6Whud7+suz8xfDa/lcnnPftM9tu6+3XDfX8uB++Dj0zsOk7zAAAF0UlEQVTy+pk6nza8NwDMEHIBFlR3vy/J65M89TAOnw04nxvOt7JtdiT3mpnrfibJDZmMJJ2S5H7DFNNP1WTK8GMyGT39qmNXcWKSG7r7xpm2qzMZdd0snxjCfPLlkde17vWUJH8ycy9XZBJEvz6Tkdk3JLmoqq6tqt9cY1T1xCQf7u6eabt6tcK6+8okP5dJkLm+qi6qqhNndpl932/Ol0e8v0JVfUNVvX6YjvvpTILWCTO7vCSTIJnh75euVs+Kc/5EVb1n5r34pplznpiv/Fxn7+/EJJ9c8Rz1avc/e/wpSR61oh89MMndhvP8SCYj59dV1Z9V1b8ZjntKkkpyeVW9v6p+co17Oa6qnj1MAf50vjxaPvserdXHV6v36pltpyR57kzdNww1nTRc++eHqczLw/alta47c761+uBXvO/De/OJ1e4Z4Fgm5AIstqdnMnV0NhROw8XXzrTNhs7D8S8jWsM05jsnuTaTf3C/tbvvOPPndt390zPHdtZ2bZI7V9XtZ9p2JPnwOus62LkPxzWZTIudvZ/bdPeHh1HZZ3b36ZlMmX1okp9Y5RzXJTmpqmqmbcdaF+zuV3T3AzMJN53kN2Y2z77vt8hkauq1q5zmd5P8rySndfcdMpk+O3v9lyU5qybP9N47k+nUaxpGIX8vk6nUdxmmgr9v5pzXzda24v6uS3Knmln9O6vf/+xnd02Sl65432/b3c9Oku5+Q3d/X5K7Dff5e0P7R7r73O4+MZMR0BdU1c58tR/NZFrwGZmEzFOntzqzz1p9/Ku2D/cz3XZNkn+3ovav6e6/Hp6//YVMRr7vNLyPyyuuu7IPr9kHs+J9r6qvzWR2AQAzhFyABTaMBL4qk+f4pm0fyyQk/tgwgvWTSf71EV7qB6rqgcPzps9K8vbuviaTkeRvGBbDueXw5741WRRqPfVfk+Svk/x6TRZ2+pYk5+Srn4dcy0eTnDzUtRlemOT86VTT4ZnQs4afv6eqvrkmK0R/OpOpsl9a5RxvS3JTkp+tquOr6hH58jTfr1BV96qq762qWyf5fCajyrPn/I6qesQwVfXnknwhyd+scqrbDzV9ZhjlnP0lQ7r7QCZTpl+a5I+GabEHc9tMwtfHhjofn8lI7tSrh/s7uarulJnZBN19dSZTjZ9ZVbeqqgcm2XOI670syZ6q+v6hz96mJgt0nVxVX19VDxtC8xeSfCbDe1RVj6qq6TOpnxxqXu0zuf1w7Ccy+eXPr62yz1p9fOo/VdWdhinMT8rkv7tk0md+cfocelUtVdWjZq57Uybv4/FV9StJ7nCI92LNPpjJs7sPnanzV+PfcgBfxf8YARbfr2YSSmadm+Q/ZfKP+m/MJEgeiVdkMmp8QyYLNj0mSYZpxv93Js95XpvkI5mMRN56A+c+O5ORtWuT/EmSpw/PZK7HmzN5pvYjVfXxDVxzLc9NcnGSN1bVjZkEyvsN2/5VJiHj05lMIX1rJuHsK3T3FzNZhOhxmQSvH0nyx2tc79ZJnp3k45m8d1+XySjs1J8Ox38yk+eUHzE8n7vSkzMZrbwxk1HO1VYZfkmSb846pip3998n+a1MAvtHh+P+amaX38tk6vbfZbKI08r7+9FM3rcbMuk3f3iI612TyUjrL2USCK/JpP/eYvjz85n0jxsyedZ4uqjWfZO8vao+k8nn9qTu/odVLvGHmUwx/nCSv8/qvyhYtY/P+NNMFtN6TyaLZL1oqP1PMunzFw1Tod+X5CHDMW/IZMGr/z1c//M5+PT95CB9cHgW+d8PtV6XSb84sMZ5AI5Z9ZWPDAEAR4OqekYmi1z92KH2Xef5vjuTUH7q8Hwvg6q6MMmB7v7lNbZ3JlPBr9zWwgA4LEZyAWDkhgWynpTk9wVcAMZOyAWAERuej/5UJos2PWemfUdVfWaNP2sulAUARzvTlQEAABgNI7kAAACMhpALAADAaAi5AAAAjIaQCwAAwGgIuQAAAIyGkAsAAMBo/P/ucaWMCn+6lgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2bde9208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "count_add = train.groupby('display_address')['display_address'].count()\n",
    "plt.figure(figsize=(16, 6))\n",
    "plt.hist(count_add.values, bins=100, log=True, alpha=0.9)\n",
    "plt.xlabel('Number of times display_address appeared', fontsize=12)\n",
    "plt.ylabel('log(Count)', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到绝大部分的地址出现的次数是在100次以下."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看照片信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2b9cfc88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train[\"num_photos\"] = train[\"photos\"].apply(len)\n",
    "cnt_srs = train['num_photos'].value_counts()\n",
    "\n",
    "plt.figure(figsize=(16,6))\n",
    "sns.barplot(cnt_srs.index, cnt_srs.values, alpha=0.8)\n",
    "plt.xlabel('Number of Photos', fontsize=12)\n",
    "plt.ylabel('Number of Occurrences', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到0到12张照片占据绝大多数。去掉12张图片以上的数据信息,查看与兴趣等级的琴形图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA88AAAF6CAYAAAAnE2osAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XmcVOd95/vPqXNq6X3fm0USNAhkFoFokECKJUDI69hjyzOJZPtatpObiT32vZOZua87k5lkZhIn98ZOZmL7ju1XLFtytCEvkjeQEwsrIyFoJKEAQqwS9Aq9d+1nee4f1d00AqkRVC803/frdV6nuru66ymp6arveZ7n97OMMYiIiIiIiIjI2wvN9ABEREREREREZjuFZxEREREREZFJKDyLiIiIiIiITELhWURERERERGQSCs8iIiIiIiIik1B4FhEREREREZmEwrOIiIiIiIjIJBSeRURERERERCah8CwiIiIiIiIyCYVnERERERERkUk4Mz2A2a66utosXLhwpochIiIiIiIiU2Dfvn29xpiaye6n8DyJhQsX0tbWNtPDEBERERERkSlgWdabl3I/LdsWERERERERmYTCs4iIiIiIiMgkFJ5FREREREREJqHwLCIiIiIiIjIJhWcRERERERGRSSg8i4iIiIiIiExC4VlERERERERkEgrPIiIiIiIiIpNQeBYRERERERGZhMKziIiIiIiIyCQUnkVEREREREQmofAsIiIiIiIiMgmFZxEREREREZFJKDyLiIiIiIiITELhWURERERERGQSCs8iIiIiIiIik1B4FhEReQd9fX288sorDA4OzvRQREREZAY5Mz0AERGR2SSTybB//37a2tp4cc8eTp44Mf616ppably6hJaWFpYsyZ0rKytncLQiIiIyXRSeRUTkmmaM4fjx4+zdu5c9e/eyf/9+PNeFUAi/uA5/3i0EBRWEUoN0J3vpbXuV5557bvz7K6uqWLliBZ/85Ce54YYbZvCZiIiIyFRSeBYRkUuWyWTo6uqivb2djo4O2tvbaW9vp+fMGZYuWUJrayvr1q2joqJipod6SQ4fPszXv/EN9r/ySu4ThRW4VUvwy5rwS+rBDo/f16+YD0AGwMsSSvYRSvRyJtHLs//4PM8++yzvf//7eeCBB6iqqpr+JyMiIiJTyjLGzPQY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L8sHPvABPvOZz1BVNQ17qkVERCQvFJ7zROFZRGRuM8Zw4sQJ9uzZw969bezfvx/XzUIohF9ch1/aRFBYSSg1QCjRh5Pqg9TQ+PdXVlWzamVuL/f1118/g89ERERELofCc54oPIuIXFsymQyvvvoqbW1tvPjiHk6cOD7+tZraWm5cupSWlhaWLFlCS0sLFRUVMzhaERERuVIKz3mi8Cwicm3r7+/n1KlTLFy48KpZji4iIiKX7lLD87vsOyIiInJtqayspLKycqaHISIiIjNMvTNEREREREREJqHwLCIiIiIiIjIJhWcRERERERGRSSg8i4iIiIiIiExC4VlERERERERkEgrPIiIiIiIiIpNQeBYRERERERGZhMKziIiIiIiIyCQUnkVEREREREQmofAsIiIiIiIiMgmFZxEREREREZFJKDyLiIiIiIiITELhWURERERERGQSCs8iIiIiIiIik1B4FhEREREREZmEwrOIiIiIiIjIJBSeRURERERERCah8CwiIiIiIiIyCYVnERERERERkUkoPIuIiIiIiIhMQuFZREREREREZBIKzyIiIiIiIiKTUHgWERERERERmYTCs4iIiIiIiMgkFJ5FREREREREJqHwLCIiIiIiIjIJhWcRERERERGRSTgzPQAREZHZKJFI8Jvf/IadO3dw4J/+iZaWFtasvYWbb76Z5cuXEw6HZ3qIIiIiMo0sY8xMj2FWW7t2rWlra5vpYYiIyDTwPI89e/awc+dO/vG558i6LrWFcFNFhjfjDieHbQIDsWiEFStWsmbtWtasWcOiRYsIhbSYS0RE5GpkWdY+Y8zaye6nmWcREbnmHTx4kB07dvAPf/8rhkfilETgjro0tzVkuaHUx7Jy90u4Fq8NOBzsdzj42h727N0LQGVFOf/mD/8tGzdunMFnISIiIlNJM8+T0MyziMjclUwm+drXvsaOHTsI2xZrqjPcVp/lPVUuziVMJA9kLA72h/nl6QLeGA7xsY99jN/7vd8jEolM/eBFREQkLzTzLCIi02J4eJhTp04xf/58SktLZ3o4l+zYsWP8pz/6j3R0dPDPrkvxvgVpCt/lq2JF1LCxIUtrXZZHjhawfft29r/yMv/5j/+EefPmTc3ARUREZEa87cyzZVmXtHnLGBPkdUSzjGaeRURykskkJ0+eHD9OnDjBGyeO0zcwCIBj26zf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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x4853a860>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train[\"num_photos\"] = train[\"photos\"].apply(len)\n",
    "train.loc[train['num_photos']>12] = 12\n",
    "plt.figure(figsize=(16,6))\n",
    "sns.violinplot(x=\"num_photos\",y=\"interest_level\",data=train,order=['low','medium','high'])\n",
    "plt.xlabel('Number of Photos',fontsize = 12)\n",
    "plt.ylabel('interest level',fontsize = 12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看房屋标签数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuAAAAF6CAYAAABYy+2xAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3X/cbfWc9/HXm0T5Mf1O6iQUg3kM0xxpZjAU/RKZoRlu0qTRmFtijB8Z92hkGL8Nt1szRhFCRihp6Ew0hpEUSilKouOk4hSTKOlz/7HWGbvLdV1nXXvtvc45+7yej8d+7LW+a63P+uzrur77+uy1v2utVBWSJEmShnGHdZ2AJEmStDGxAJckSZIGZAEuSZIkDcgCXJIkSRqQBbgkSZI0IAtwSZIkaUAW4JIkSdKALMAlSZKkAVmAS5IkSQOyAJckSZIGtMm6TmDattlmm9pll13WdRqSJEmaceeff/4Pq2rbta038wX4Lrvswnnnnbeu05AkSdKMS/LdLus5BEWSJEkakAW4JEmSNCALcEmSJGlAFuCSJEnSgCzAJUmSpAFZgEuSJEkDsgCXJEmSBmQBLkmSJA3IAlySJEkakAW4JEmSNCALcEmSJGlAFuCSJEnSgCzAJUmSpAFtsq4T0PSsPPmFvbbf6U/fPKFMJEmStIZHwCVJkqQBWYBLkiRJA7IAlyRJkgZkAS5JkiQNyAJckiRJGpAFuCRJkjSgwQrwJFsk+UiSS5NckuT3kmyVZEWSy9rnLdt1k+RtSS5PcmGS3UfiHNquf1mSQ4fKX5IkSZqEIY+AvxX4VFX9JvAQ4BLgaOCsqtoNOKudB9gf2K19HAEcB5BkK+AY4OHAHsAxa4p2SZIkaUMwSAGe5B7Ao4DjAarqlqq6ATgIOLFd7UTgSe30QcB7q3EOsEWSHYB9gRVVtbqqrgdWAPsN8RokSZKkSRjqCPh9geuAdyf5apJ3JbkrsH1VXQ3QPm/Xrr8jcNXI9ivbtoXaJUmSpA3CUAX4JsDuwHFV9TvAT/nVcJP5ZJ62WqT99hsnRyQ5L8l511133Tj5SpIkSVMxVAG+ElhZVV9q5z9CU5Bf0w4toX2+dmT9ZSPb7wSsWqT9dqrqnVW1vKqWb7vtthN9IZIkSVIfgxTgVfUD4KokD2ib9ga+AZwGrLmSyaHAqe30acAz26uh7An8uB2i8mlgnyRbtidf7tO2SZIkSRuETQbc1/OAk5JsClwBHEbzAeDDSQ4Hvgcc3K57BnAAcDlwU7suVbU6yauAL7frHVtVq4d7CZIkSVI/gxXgVfU1YPk8i/aeZ90CnrtAnBOAEyabnSRJkjQM74QpSZIkDcgCXJIkSRqQBbgkSZI0IAtwSZIkaUAW4JIkSdKALMAlSZKkAVmAS5IkSQOyAJckSZIGZAEuSZIkDcgCXJIkSRqQBbgkSZI0IAtwSZIkaUAW4JIkSdKALMAlSZKkAVmAS5IkSQOyAJckSZIGZAEuSZIkDcgCXJIkSRqQBbgkSZI0IAtwSZIkaUAW4JIkSdKALMAlSZKkAW2yrhPQhuWSU/6q1/YPfPJbJpSJJEnShskj4JIkSdKALMAlSZKkAVmAS5IkSQOyAJckSZIGZAEuSZIkDcgCXJIkSRqQBbgkSZI0IAtwSZIkaUAW4JIkSdKALMAlSZKkAVmAS5IkSQOyAJckSZIGZAEuSZIkDcgCXJIkSRqQBbgkSZI0IAtwSZIkaUAW4JIkSdKALMAlSZKkAQ1WgCe5MsnXk3wtyXlt21ZJViS5rH3esm1PkrcluTzJhUl2H4lzaLv+ZUkOHSp/SZIkaRKGPgL+mKp6aFUtb+ePBs6qqt2As9p5gP2B3drHEcBx0BTswDHAw4E9gGPWFO2SJEnShmBdD0E5CDixnT4ReNJI+3urcQ6wRZIdgH2BFVW1uqquB1YA+w2dtCRJkjSuIQvwAs5Mcn6SI9q27avqaoD2ebu2fUfgqpFtV7ZtC7VLkiRJG4RNBtzXH1TVqiTbASuSXLrIupmnrRZpv/3GTYF/BMDOO+88Tq6SJEnSVAx2BLyqVrXP1wIfoxnDfU07tIT2+dp29ZXAspHNdwJWLdI+d1/vrKrlVbV82223nfRLkSRJksY2SAGe5K5J7r5mGtgHuAg4DVhzJZNDgVPb6dOAZ7ZXQ9kT+HE7ROXTwD5JtmxPvtynbZMkSZI2CEMNQdke+FiSNfv8QFV9KsmXgQ8nORz4HnBwu/4ZwAHA5cBNwGEAVbU6yauAL7frHVtVqwd6DVP3w399e6/ttzn4yAllIkmSpGkZpACvqiuAh8zT/iNg73naC3juArFOAE6YdI6SJEnSENb1ZQglSZKkjYoFuCRJkjQgC3BJkiRpQBbgkiRJ0oAswCVJkqQBWYBLkiRJA7IAlyRJkgZkAS5JkiQNyAJckiRJGpAFuCRJkjQgC3BJkiRpQGMV4Ek2S7LppJORJEmSZl2nAjzJG5Ps0U4/HlgN3JDkCdNMTpIkSZo1XY+APx24qJ1+BfAM4InAa6aRlCRJkjSrNum43uZVdVOSrYH7VtUpAEnuPb3UJEmSpNnTtQD/VpKnA7sCKwCSbAP8bFqJSZIkSbOoawH+v4G3Ar8AntW27QucOY2kJEmSpFnVqQCvqi8Dvz+n7STgpGkkpY3HeR97fq/tl//RWyeUiSRJ0jA6X4YwyeOSHJ/kE+388iR7TS81SZIkafZ0vQzh84DjgMuAR7XNPwP+fkp5SZIkSTOp6xHwFwCPrarXAre1bZcCD5hKVpIkSdKM6lqA3x24qp2u9vlOwC0Tz0iSJEmaYV0L8M8BR89pOwr47GTTkSRJkmZb18sQPg/4RJJnA3dP8k3gJ4C3opckSZKWoOtlCK9O8jDgYcC9aYajnFtVty2+pSRJkqRRnQrwJA8FflRV5wLntm3LkmxVVRdMM0FJkiRplnQdA/5+mpMuR20KvG+y6UiSJEmzrWsBvnNVXTHaUFXfBnaZeEaSJEnSDOt6EubKJLtX1VfWNCTZHVg1nbQ2DKtPObnX9ls9+U8nlIkkSZI2FF0L8LcApyZ5PfBt4H7Ai4BXTysxSZIkaRZ1vQrKvyS5ATgcWEZzFZS/rqqPTDM5SZIkadZ0PQJOVf0r8K9TzEWSJEmaeZ0L8CT7AA8F7jbaXlWvmHRSkiRJ0qzqeh3wtwN/QnPr+ZtGFtU0kpIkSZJmVdcj4E8DHlpVV00zGUmSJGnWdb0O+I+AG6aZiCRJkrQx6HoE/E3ASUn+AbhmdMHcG/RIkiRJWljXAvy49vnAOe0F3HFy6UiSJEmzret1wLsOVZEkSZK0iCUV1kmWJdlzWslIkiRJs65TAZ5k5yRfAC4F/r1te0qSd00zOUmSJGnWdD0C/s/AJ4G7A79o21YAj1vKzpLcMclXk5zezt8nyZeSXJbk5CSbtu13bucvb5fvMhLjZW37N5Psu5T9S5IkSeta1wJ8D+C1VXUb7c13qurHwG8scX/PBy4ZmX8d8Jaq2g24Hji8bT8cuL6qdgXe0q5HkgcBTwUeDOwHvCOJJ4FKkiRpg9G1AL8G2HW0oS2Gv9d1R0l2Ah4PvKudD7AX8JF2lROBJ7XTB7XztMv3btc/CPhQVd1cVd8BLqf5cCBJkiRtELoW4G8ETk9yGLBJkqcBJ9Meme7oH4GXALe181sDN1TVre38SmDHdnpH4CqAdvmP2/X/p32ebSRJkqT1XtfLEJ6QZDVwBE0B/Ezgb6vq4122T3IgcG1VnZ/k0Wua59vVWpYtts3o/o5oc2XnnXfukqIkSZI0iLUW4O0Y62OAV3ctuOfxB8ATkxwA3AW4B80R8S2SbNIe5d4JWNWuvxJYBqxMsgnNWPPVI+1rjG7zP6rqncA7AZYvX/5rBbokSZK0rqx1CEpV/RJ4Lr+6+smSVdXLqmqnqtqF5iTKz1TV04HPAk9pVzsUOLWdPq2dp13+maqqtv2p7VVS7gPsBpw7bl6SJEnS0LqOAT8ReM4U9v9S4IVJLqcZ43182348sHXb/kLgaICquhj4MPAN4FPAc9sPCJIkSdIGodMYcJorjTwvyUtoxoD/z7COqnrUUnZYVWcDZ7fTVzDPVUyq6ufAwQts/2rg1UvZpyRJkrS+6FqA/0v7kCRJktRD15Mw70dzEubN009JkiRJml2DnIQpSZIkqdF1CMqakzDfMcVcpN7+89Sjem3/yIPeNqFMJEmS5jf4SZiSJEnSxsyTMCVJkqQBdb0V/YnTTkSSJEnaGHQqwJM8a6FlVXXC5NKRJEmSZlvXISiHzJm/J82lCb8AWIBLkiRJHXUdgvKYuW3tUfEHTjwjSZIkaYat9Trgi3gPcPiE8pAkSZI2Cl3HgM8t1DcHngHcMPGMJEmSpBnWdQz4rYxc+7v1feCIyaYjSZIkzbauBfh95sz/tKp+OOlkJEmSpFm3lCPgN1XV9WsakmwJbFZVq6aSmSRJkjSDup6E+XFgpzltOwEfm2w6kiRJ0mzrWoA/oKq+PtrQzv/m5FOSJEmSZlfXAvzaJLuONrTzP5p8SpIkSdLs6lqAnwCckuTAJA9K8gTgI8C7ppeaJEmSNHu6noT5WuAXwBuBZcD3gOOBN08pL0mSJGkmdb0V/W3AG9qHJEmSpDF1GoKS5OgkD5vTtkeSl0wnLUmSJGk2dR0D/nzgG3PavgG8YLLpSJIkSbOtawG+Kc0Y8FG3AHeZbDqSJEnSbOtagJ8P/O85bc8BvjLZdCRJkqTZ1vUqKH8FrEhyCPBtYFdge+Bx00pMkiRJmkVdr4JycZL7AwfSXIbwo8DpVXXjNJOT1rVPf+LI3jH2fcLbJ5CJJEmaFV2PgAPsAHwXOL+qLptSPpIkSdJMW+sY8CR/nORK4JvAF4BLk1yZ5CnTTk6SJEmaNYsW4EkeD7wbeAdwX2Az4H7AccC7khw49QwlSZKkGbK2ISh/C/xFVX1opO1K4HVJvtcuP31KuUmSJEkzZ21DUB4MfGyBZR8FHjTZdCRJkqTZtrYC/GbgHgss24LmZjySJEmSOlpbAf4p4B8WWPYa4NOTTUeSJEmabWsbA/5S4PNJLgROAa6muRzhk2mOjD9iuulNzvUfOaN3jC2fcsAEMpEkSdLGbNECvKq+n2R34IXAfsA2wA+BU4G3VNXq6acoSZIkzY613oinqq6nudrJ304/HUmSJGm2rfVGPJIkSZImxwJckiRJGpAFuCRJkjSgBQvwJOeMTB8zTDqSJEnSbFvsCPj9k9ylnf7rPjtJcpck5ya5IMnFSV7Ztt8nyZeSXJbk5CSbtu13bucvb5fvMhLrZW37N5Ps2ycvSZIkaWiLXQXlVOBbSa4ENkvyuflWqqpHddjPzcBeVXVjkjvRXFv832gub/iWqvpQkn8CDgeOa5+vr6pdkzwVeB3wp0keBDwVeDBwL+Dfk9y/qn7Z6dVKkiRJ69iCBXhVHZbkEcAuwMOA48fdSVUVcGM7e6f2UcBewP9q208E/o6mAD+onQb4CPD2JGnbP1RVNwPfSXI5sAfwxXFzkyRJkoa0thvxfJ7maPWmVXVinx0luSNwPrAr8P+AbwM3VNWt7SorgR3b6R2Bq9ocbk3yY2Drtv2ckbCj20iSJEnrvbXeiAegqk5I8hjgEJqC9/vA+6vqM1131A4TeWiSLYCPAQ+cb7X2OQssW6j9dpIcARwBsPPOO3dNUZIkSZq6TpchTPLnwMnAD4CPAlcDH0jy7KXusKpuAM4G9gS2SLLmQ8BOwKp2eiWwrN33JsBvAKtH2+fZZnQf76yq5VW1fNttt11qipIkSdLUdL0O+EuAx1XV31TVP1fVy4F92va1SrJte+SbJJsBjwUuAT4LPKVd7VCaEz8BTmvnaZd/ph1Hfhrw1PYqKfcBdgPO7fgaJEmSpHWu0xAUmvHX35jT9k1gq47b7wCc2I4DvwPw4ao6Pck3gA8l+Xvgq/zqRM/jgfe1J1muprnyCVV1cZIPt7ncCjzXK6BIkiRpQ9K1AP888OYkL62qm5LcFfgH4L+6bFxVFwK/M0/7FTRXMZnb/nPg4AVivRp4dce8JUmSpPVK1yEozwF+G/hxkmuAG4CHAH8xrcQkSZKkWdT1KihXA3+YZCeaG+CsqqqVU81MkiRJmkFdh6AA0BbdFt6SJEnSmJZUgEvq7+OfPLLX9k96/NsnlIkkSVoXuo4BlyRJkjQBay3Ak9whyV5JNh0iIUmSJGmWrbUAr6rbgFOr6pYB8pEkSZJmWtchKJ9LsudUM5EkSZI2Al1Pwvwu8G9JTgWuAmrNgqp6xTQSkyRJkmZR1wJ8M+Dj7fROU8pFkiRJmnldb8Rz2LQTkSRJkjYGna8DnuSBwFOA7avqyCQPAO5cVRdOLTtJkiRpxnQ6CTPJwcDngB2BZ7bNdwfePKW8JEmSpJnU9SooxwKPq6rnAL9s2y4AHjKVrCRJkqQZ1bUA346m4IZfXQGlRqYlSZIkddC1AD8fOGRO21OBcyebjiRJkjTbup6EeRRwZpLDgbsm+TRwf2CfqWUmSZIkzaCulyG8NMlvAgcCp9PcjOf0qrpxmslJkiRJs6bzZQir6qYkXwC+A6yy+JYkSZKWrutlCHdO8p/AlcAngSuTfD7JvaeZnCRJkjRrup6EeSLNiZhbVNV2wJbAl9t2SZIkSR11HYLyu8A+VfULgKq6MclLgR9NLTNJkiRpBnUtwM8B9gC+MNK2HPjixDOStCQnferIXts/fb+3TygTSZLUxYIFeJJjR2a/DZyR5JM0V0BZBhwAfGC66UmSJEmzZbEj4MvmzH+0fd4OuBn4GHCXaSQlSZIkzaoFC/CqOmzIRCRJkqSNQefrgCfZHNgVuNtoe1X916STkiRJkmZVpwI8yTOBtwO3AD8bWVTAzlPIS5IkSZpJXY+Avx54clWtmGYykiRJ0qzreiOeW4Czp5iHJEmStFHoWoD/LfDmJNtMMxlJkiRp1nUtwL8FPBG4Jskv28dtSX45xdwkSZKkmdN1DPj7gPcCJ3P7kzAlSZIkLUHXAnxr4BVVVdNMRpIkSZp1XQvwdwOH0BwFlzTD/mnF83pt/5zH/d8JZSJJ0mzqWoDvARyZ5OXANaMLqupRE89KkiRJmlFdC/B/aR+SJEmSeuhUgFfVidNORJIkSdoYdL0V/bMWWlZVJ0wuHUmSJGm2dR2Ccsic+XsC9wO+AFiAS5IkSR11HYLymLlt7VHxB048I0mSJGmGdb0T5nzeAxzeZcUky5J8NsklSS5O8vy2faskK5Jc1j5v2bYnyduSXJ7kwiS7j8Q6tF3/siSH9shfkiRJGlynAjzJHeY87gYcAdzQcT+3An9dVQ8E9gSem+RBwNHAWVW1G3BWOw+wP7Bb+zgCOK7NYyvgGODhNJdGPGZN0S5JkiRtCLqOAb8VmHsXzO8Dz+6ycVVdDVzdTv93kkuAHYGDgEe3q50InA28tG1/b3vnzXOSbJFkh3bdFVW1GiDJCmA/4IMdX4ckSZK0TnUtwO8zZ/6nVfXDcXaYZBfgd4AvAdu3xTlVdXWS7drVdgSuGtlsZdu2ULskSZK0Qeh6EuZ3J7GzdujKKcALquonSRZcdb40Fmmfu58jaIausPPOO4+XrCRJkjQFixbgST7LPAXuiKqqvbvsKMmdaIrvk6rqo23zNUl2aI9+7wBc27avBJaNbL4TsKptf/Sc9rPnSeqdwDsBli9fvlj+kiRJ0qDWdgT8/Qu07wgcBWzeZSdpDnUfD1xSVW8eWXQacCjw2vb51JH2I5N8iOaEyx+3RfqngdeMnHi5D/CyLjlIkiRJ64NFC/CqOn50PsnWNAXvs4GTgWM77ucPaG7m8/UkX2vb/oam8P5wksOB7wEHt8vOAA4ALgduAg5r81md5FXAl9v1jl1zQqYkSZK0Ieh6K/p7AC8GjgROB3avqm933UlVfZ75x28D/NoQlvbqJ89dINYJePdNSZIkbaAWvQ54ks2SvAy4guaul4+oqkOWUnxLkiRJ+pW1HQH/DnBH4PXAecD2SbYfXaGqPjOl3CRJkqSZs7YC/Oc0V0H5ywWWF3DfiWYkSZIkzbC1nYS5y0B5SJIkSRuFRceAS5IkSZosC3BJkiRpQBbgkiRJ0oAswCVJkqQBWYBLkiRJA7IAlyRJkgZkAS5JkiQNaG034pGk3l752ef12v6Yx/zfCWUiSdK65xFwSZIkaUAW4JIkSdKALMAlSZKkAVmAS5IkSQOyAJckSZIGZAEuSZIkDcgCXJIkSRqQBbgkSZI0IAtwSZIkaUAW4JIkSdKALMAlSZKkAVmAS5IkSQOyAJckSZIGZAEuSZIkDWiTdZ2AJC3VUWe/ptf2b3v030woE0mSls4j4JIkSdKALMAlSZKkAVmAS5IkSQOyAJckSZIGZAEuSZIkDcgCXJIkSRqQBbgkSZI0IAtwSZIkaUAW4JIkSdKALMAlSZKkAVmAS5IkSQOyAJckSZIGZAEuSZIkDcgCXJIkSRrQIAV4khOSXJvkopG2rZKsSHJZ+7xl254kb0tyeZILk+w+ss2h7fqXJTl0iNwlSZKkSRrqCPh7gP3mtB0NnFVVuwFntfMA+wO7tY8jgOOgKdiBY4CHA3sAx6wp2iVJkqQNxSAFeFV9Dlg9p/kg4MR2+kTgSSPt763GOcAWSXYA9gVWVNXqqroeWMGvF/WSJEnSem2Tdbjv7avqaoCqujrJdm37jsBVI+utbNsWapekXo767D/32v5tj/mLCWUiSdoYrI8nYWaetlqk/dcDJEckOS/Jedddd91Ek5MkSZL6WJcF+DXt0BLa52vb9pXAspH1dgJWLdL+a6rqnVW1vKqWb7vtthNPXJIkSRrXuizATwPWXMnkUODUkfZntldD2RP4cTtU5dPAPkm2bE++3KdtkyRJkjYYg4wBT/JB4NHANklW0lzN5LXAh5McDnwPOLhd/QzgAOBy4CbgMICqWp3kVcCX2/WOraq5J3ZKkiRJ67VBCvCqetoCi/aeZ90CnrtAnBOAEyaYmiRJkjSo9fEkTEmSJGlmWYBLkiRJA7IAlyRJkgZkAS5JkiQNyAJckiRJGpAFuCRJkjQgC3BJkiRpQBbgkiRJ0oAGuRGPJG1Mnv+Zk3rHeOteT59AJpKk9ZFHwCVJkqQBWYBLkiRJA7IAlyRJkgZkAS5JkiQNyAJckiRJGpAFuCRJkjQgC3BJkiRpQBbgkiRJ0oAswCVJkqQBWYBLkiRJA7IAlyRJkgZkAS5JkiQNyAJckiRJGtAm6zoBSdLaPf+sU3pt/9a9nzyhTCRJfXkEXJIkSRqQBbgkSZI0IAtwSZIkaUAW4JIkSdKALMAlSZKkAVmAS5IkSQOyAJckSZIGZAEuSZIkDcgb8UjSRugFZ53ea/t/3PvACWUiSRsfj4BLkiRJA7IAlyRJkgZkAS5JkiQNyAJckiRJGpAFuCRJkjQgr4IiSertBWed2TvGP+69zwQykaT1n0fAJUmSpAFZgEuSJEkDcgiKJGm99MKzzu61/Zv3fvRE8pCkSdsgj4An2S/JN5NcnuTodZ2PJEmS1NUGV4AnuSPw/4D9gQcBT0vyoHWblSRJktTNhjgEZQ/g8qq6AiDJh4CDgG+s06wkSeu1vz7rnF7bv2nvPSeUiaSN3YZYgO8IXDUyvxJ4+DrKRZK0kXrxWRf02v4Nez/kdvMvPevyXvEAXrf3rrffx2d/0Cveix9zz9vNf+izP+oV76mP2brX9uvCRZ9Y3Wv733rCVhPKRLMkVbWuc1iSJAcD+1bVn7fzhwB7VNXzRtY5AjiinX0A8M0OobcBfjjhdCcdc32PN42Y63u8acTc2OJNI+b6Hm8aMTe2eNOIub7Hm0bMjS3eNGKu7/GmEXNji7eUmPeuqm3XttKGeAR8JbBsZH4nYNXoClX1TuCdSwma5LyqWt4/venFXN/jTSPm+h5vGjE3tnjTiLm+x5tGzI0t3jRiru/xphFzY4s3jZjre7xpxNzY4k0j5gZ3EibwZWC3JPdJsinwVOC0dZyTJEmS1MkGdwS8qm5NciTwaeCOwAlVdfE6TkuSJEnqZIMrwAGq6gzgjAmHXdKQlXUUc32PN42Y63u8acTc2OJNI+b6Hm8aMTe2eNOIub7Hm0bMjS3eNGKu7/GmEXNjizfxmBvcSZiSJEnShmxDHAMuSZIkbbAswJn8re2TnJDk2iQXTSi/ZUk+m+SSJBcneX7PeHdJcm6SC9p4r5xQnndM8tUkp08o3pVJvp7ka0nOm0C8LZJ8JMml7c/y93rEekCb15rHT5K8oGd+f9X+Pi5K8sEkd+kTr435/DbexePkN9/fcpKtkqxIcln7vGXPeAe3+d2WZMlnmC8Q8w3t7/nCJB9LskXPeK9qY30tyZlJ7tUn3siyFyWpJNt0jbdIjn+X5Psjf5MH9M0xyfPa98aLk7y+Z34nj+R2ZZKvdY23SMyHJjlnzXtEkj16xntIki+27zufSHKPJcSb93163P6ySLyx+ssi8fr0lYVijtVfFoo3snxJ/WWR/MbqK4vl16OvLJTjWP1lkXhj9ZUsUC8kOTJNzTTO+9dCMU9qf4YXtf3zTj3jJcmrk3yr/Xkc1TPeXkm+0uZ3YpJ+w7iraqN+0JzI+W3gvsCmwAXAg3rGfBSwO3DRhHLcAdi9nb478K0+OQIB7tZO3wn4ErDnBPJ8IfAB4PQJve4rgW0m+Ls+EfjzdnpTYIsJ/g39gOban+PG2BH4DrBZO/9h4M965vVbwEXA5jTne/w7sNsSY/za3zLweuDodvpo4HU94z2Q5nr9ZwPLx3id88XcB9iknX7dBHK8x8j0UcA/9YnXti+jOZn8u0v9O18gx78DXjTm38p88R7T/s3cuZ3fru9rHln+JuAVE8jxTGD/dvoA4Oye8b4M/GE7/SzgVUuIN+/79Lj9ZZF4Y/WXReL16SsLxRyrvywUr51fcn9ZJL+x+soi8fr0lbX+f19Kf1kkx7H6CgvUC8DvALswxv/pRWIe0C4L8EHgL3vGOwx4L3CHpfxeFoj3+zQ3gbx/234scPhS/4ZGHx4BH7m1fVXdAqy5tf3YqupzQL9bZ90+3tVV9ZV2+r+BS2gKtnHjVVXd2M7eqX30OhkgyU7A44F39YkzLWmOZD0KOB6gqm6pqhsmFH5sPKVZAAAMRElEQVRv4NtV9d2ecTYBNms/VW/OnOvbj+GBwDlVdVNV3Qr8B/BHSwmwwN/yQTQfZmifn9QnXlVdUlVdbpa1lJhntq8Z4Bya+wX0ifeTkdm7soT+ssj7wVuAlywlVoeYY1kg3l8Cr62qm9t1rp1EfkkC/AnNP9i+ORaw5ij1b7CEPrNAvAcAn2unVwBPXkK8hd6nx+ovC8Ubt78sEq9PX1ko5lj9ZS3/65bcX6bwv3OheH36yqI5LrW/LBJvrL6yUL1QVV+tqiu7xFhCzDPaZQWcS8e/xUVqmr8Ejq2q29r1Ov1eFoj3S+DmqvpW276k94f5WIDPf2v7sTvotCXZheaT55d6xrlj+5XWtcCKquoVD/hHmjfH23rGGVXAmUnOT3N30z7uC1wHvDvNMJl3Jblr/xSB5lr0Syom5qqq7wNvBL4HXA38uKrO7JnXRcCjkmydZHOaowvL1rJNF9tX1dXQvNkD200g5jQ9C/i3vkHarzKvAp4OvKJnrCcC36+qfvcy/3VHtl/9n5AlDA1awP2BRyb5UpL/SPKwSSQIPBK4pqoum0CsFwBvaH8vbwRe1jPeRcAT2+mDGbO/zHmf7t1fJvW+3yHe2H1lbsy+/WU03iT6yzyvuVdfmRNvIn1lgd/L2P1lTryx+8oU6oVFY7ZDTw4BPtUz3v2AP22H3Pxbkt3GjUfzgeBO+dWwr6fQ8/+pBXjzVcNc6+WlYZLcDTgFeMGcIwxLVlW/rKqH0nzC3CPJb/XI60Dg2qo6v09O8/iDqtod2B94bpJH9Yi1Cc3XzcdV1e8AP6X5OriXNDeDeiLwrz3jbElzpOw+wL2AuyZ5Rp+YVXUJzVfKK2jeyC4Abl10oxmT5OU0r/mkvrGq6uVVtayNdWSPnDYHXk7PIn4ex9H8w3kozYe4N/WMtwmwJc1XuS8GPtwejevrafT8wDriL4G/an8vf0X7DVcPz6J5rzmf5uv7W5YaYJLv00PG69NX5ovZp7+Mxmtz6tVf5smvV1+ZJ17vvrLI73ms/jJPvLH7yiTrhY4x3wF8rqr+s2e8OwM/r+bulf8CnDBuPODBNAfb3pLkXOC/6fn/1AK8w63t1wftJ8JTgJOq6qOTilvNMIyzgf16hPkD4IlJrqQZwrNXkvdPILdV7fO1wMdoOsG4VgIrRz5lf4SmIO9rf+ArVXVNzziPBb5TVddV1S+Aj9KMOeulqo6vqt2r6lE0X7dP4qjjNUl2AGifO3/dOqQkhwIHAk9vv9KclA/Q76vH+9F80Lqg7TM7AV9Jcs8+SVXVNe0/jdto/tn06S/Q9JmPtl/Hnkvz7daSTraaqx1e9cfAyT1zW+NQmr4CzYfgXq+5qi6tqn2q6ndpip5vL2X7Bd6nx+4vk37fXyhen77SIccl9Zd54vXqL/Pl16evLPB6e/WVRX4vY/WXBeL17isTqhcWjZnkGGBbmnPK+sZbSfNzgKaG+O0+8arqi1X1yKrag2aoWq//pxbgG8Ct7dtP0scDl1TVmycQb9u0Z7on2Yym+Lt03HhV9bKq2qmqdqH5+X2mqnodvU1y1yR3XzNNc6LQ2FeVqaofAFcleUDbtDfwjT45tiZ1NO97wJ5JNm9/33vTjN3rJcl27fPONG/kk8j1NJo3c9rnUycQc6KS7Ae8FHhiVd00gXijX10+kX795etVtV1V7dL2mZU0J039oGeOO4zM/hE9+kvr48Bebez705y4/MOeMR8LXFpVK3vGWWMV8Ift9F70/Ic40l/uAPwf4J+WsO1C79Nj9ZcpvO/PG69PX1kk5lj9Zb54ffrLIvmN1VcW+Z2M3VfW8ntecn9ZJN5YfWXS9cJiMZP8ObAv8LT2w1GveIz8Xmhe+7fmj9A5vzXvD3em6TOd3x/mVT3O4JyVB83Y2G/RHO14+QTifZDma61f0LxZ9DpTFngEzbCYC4GvtY8DesT7beCrbbyLWOLVCNYS+9FM4CooNGO2L2gfF0/o9/JQ4Lz2dX8c2LJnvM2BHwG/MaGf3Stp3jQuAt5He0Z9z5j/SfNB4wJg7zG2/7W/ZWBr4CyaN/CzgK16xvujdvpm4Brg0xPI8XKaczvW9JelXLVkvnintL+XC4FP0JxoNna8OcuvZOlXEZgvx/cBX29zPA3YoWe8TYH3t6/7K8BefV8z8B7gOWP+Lc+X4yOA89u/7y8Bv9sz3vNp/hd8C3gtNDer6xhv3vfpcfvLIvHG6i+LxOvTVxaKOVZ/WSjeuP1lkfzG6iuLxOvTVxZ8zeP0l0VyHKuvsEC9QHN1m5U0wzBWAe9aQo4LxbyVpg5bk3fXK78sFG8L4JPt7/qLwEN6xnsDzYGxb9IM7en8e5nv4Z0wJUmSpAE5BEWSJEkakAW4JEmSNCALcEmSJGlAFuCSJEnSgCzAJUmSpAFZgEvSeizJe5L8/Trad5K8O8n17d3f5lvn75P8MEmv65hL0sbEAlySliDJlUmuaW8Qtabtz5OcvQ7TmpZHAI8Ddqrm7m+3k2QZ8NfAg6qq1508kzw6yaRu0CNJ6zULcElauk1obtqyQUlyxyVucm/gyqr66SLLf1RVnW+vPi3tbbslaYNgAS5JS/cG4EVrblc8KskuSWq0IExydnubZZL8WZIvJHlLkhuSXJHk99v2q5Jcm+TQOWG3SbIiyX8n+Y8k9x6J/ZvtstVJvpnkT0aWvSfJcUnOSPJT4DHz5HuvJKe121+e5Nlt++HAu4DfS3JjklfO2e6xwArgXu3y97Tteyb5r/a1XZDk0SPbHJbkkvZ1XJHkL9r2uwL/NhLrxjav2w2/mXuUvP024qVJLgR+mmSTdrtTklyX5DtJjhpZf48k5yX5SfstRu9bvEvSOCzAJWnpzgPOBl405vYPp7nN8dbAB4APAQ8DdgWeAbw9yd1G1n868CpgG5pbNJ8E/1O4rmhjbAc8DXhHkgePbPu/gFcDdwc+P08uH6S5pfS9gKcAr0myd1UdDzwH+GJV3a2qjhndqKr+HdgfWNUu/7MkO9Lc+vnvga1ofj6nJNm23exa4EDgHsBhwFuS7N4eYR+NdbeqWtXxZ/k04PE0t52+jebW5xcAOwJ7Ay9Ism+77luBt1bVPYD7AR/uuA9JmigLcEkazyuA540Ul0vxnap6d1X9EjgZWAYcW1U3V9WZwC00xfgan6yqz1XVzcDLaY5KL6MpZq9sY91aVV8BTqEppNc4taq+UFW3VdXPR5NoYzwCeGlV/byqvkZz1PuQMV4TNB8ezqiqM9r9raD5sHIAQFV9sqq+XY3/AM4EHjnmvtZ4W1VdVVU/o/kQs21VHVtVt1TVFcC/AE9t1/0FsGuSbarqxqo6p+e+JWksFuCSNIaqugg4HTh6jM2vGZn+WRtvbtvoEfCrRvZ7I7Ca5oj1vYGHt8M9bkhyA83R8nvOt+087gWsrqr/Hmn7Ls3R43HcGzh4Tj6PAHYASLJ/knPa4S430BTm24y5rzVGX9+9aYaxjO7/b4Dt2+WHA/cHLk3y5SQH9ty3JI3Fk1YkaXzHAF8B3jTStuaExc2Bn7TTva4QQnOEHIB2aMpWwCqa4vM/qupxi2xbiyxbBWyV5O4jRfjOwPfHzPMq4H1V9ey5C5Lcmebo/DNpjsr/IsnHgSyS509pfo5rzPdzHN3uKppvF3abL7mqugx4WpI7AH8MfCTJ1oucZCpJU+ERcEkaU1VdTjOE5KiRtutoCthnJLljkmfRjDfu44Akj0iyKc1Y8C9V1VU0R+Dvn+SQJHdqHw9L8sCO+V8F/BfwD0nukuS3aY4SnzRmnu8HnpBk3/a136U9cXInYFPgzsB1wK1J9gf2Gdn2GmDrJL8x0va19rVvleSewAvWsv9zgZ+0J2Zu1ubwW0keBpDkGUm2rarbgBvabX455muVpLFZgEtSP8cCd53T9mzgxcCPgAfTFLl9fIDmaPtq4HdphpnQHrXeh2aM8yrgB8DraArdrp4G7NJu/zHgmHbs9pK1Bf1BNMM+rqM5Iv1i4A5trkfRnPh4Pc3JoaeNbHspzQmhV7TDR+4FvI/mhMoracaLn7yW/f8SeALwUOA7wA9pxrSvKer3Ay5OciPNCZlPnTsuXpKGkKrFvp2UJEmSNEkeAZckSZIGZAEuSZIkDcgCXJIkSRqQBbgkSZI0IAtwSZIkaUAW4JIkSdKALMAlSZKkAVmAS5IkSQOyAJckSZIG9P8BQgbvxcCpl7AAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1402c320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train[\"num_features\"] = train[\"features\"].apply(len)\n",
    "cnt_srs = train['num_features'].value_counts()\n",
    "\n",
    "plt.figure(figsize=(12,6))\n",
    "sns.barplot(cnt_srs.index, cnt_srs.values, alpha=0.8)\n",
    "plt.ylabel('Number of Occurrences', fontsize=12)\n",
    "plt.xlabel('Number of features', fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到包含16个标签以下的房屋占据了绝大多数,因此可以去掉17个标签以上的房屋"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA88AAAF6CAYAAAAnE2osAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3VmQXNed5/fvufdm3twza0NVobAVwAJEgaJaJMRF3ZTG4yU80xMdE2PHTLjD4Z6w3ePlYWLsCDvCEbYfbD/5wctMxLQ8asf0tNQtzUS71SGRlLiLS4vsFilSoEgQBIm1UNiqUHsudzt+uJlZWdgKABMooPD7hG7ce7NuZZ0CxSJ+dc75/421FhERERERERG5PmezByAiIiIiIiJyr1N4FhEREREREdmAwrOIiIiIiIjIBhSeRURERERERDag8CwiIiIiIiKyAYVnERERERERkQ0oPIuIiIiIiIhsQOFZREREREREZAMKzyIiIiIiIiIbUHgWERERERER2YC32QO41w0PD9s9e/Zs9jBERERERETkDnjvvfdmrbUjGz2n8LyBPXv28O677272MEREREREROQOMMacupnntGxbREREREREZAMKzyIiIiIiIiIbUHgWERERERER2YDCs4iIiIiIiMgGFJ5FRERERERENqDwLCIiIiIiIrIBhWcRERERERGRDSg8i4iIiIiIiGzA2+wBiIjcCmstKysrXLx4kYsXL3LhwoXusbKywp49e5iammJqaoqdO3fiuu5mD1lEREREtgCFZxG5512+fJmXXnqJF196mTNnTtNsNNY/4DgYv4R1PN75619AEgOQ9X327d3HgQP7mZqa4uDBg0xOTmKM2YTvQkRERETuZwrPInJPCsOQt99+m+eff5533nmHJEmwpW1E1b0kI0VstoT1S+k5k4dOIE4STHMed3WOsD7HR9NzfHLseWwUADA8so3f/MbTPP300zz22GPkcrlN/C5FRERE5H5hrLWbPYZ72qFDh+y777672cMQeSBYazl27Bg/+clPeOHFl1hZXsL4RVqD+4hGprD5gdt9Y0xrGXdpBnfhDJmlGWwckslkeeyxr/H002mYHh8f7+83JCIiIiL3PGPMe9baQxs+p/B8YwrPInfe0tISL730Ej/+8bMcP/45OC5RbRfRyH7i6gSYPtc2TGKc5XN4C2fILE5DYxGAUrnMrp272L17Fzt37mTHjh3ds+/7694iiiKCILjqCMOwe+5cx3HM8PAwu3fvplwu9/d7EREREZEv5GbDs5Zti8imSJKEX/7ylzz77LO88eabRGGILQ4T7P4G0fBe8O7gcmrHJanuIKjuIABMYxF3cZqwMc/i9GWOfH4S21rtPm6MoVKtEscxYRAShgFJktzWl67WauzZvZvdu3eza9cudu/ezeTkJNu2bevTNyciIiIid4LCs4jcVRcuXOAnP/kJzz73HBcvXMBkfILBKaKRAyTFoU0Zk81XifLV9S/GAU5zCdNcxGksMhusgu9C0cU6Ljjts0mvMevvreOsXRuD01rFNBeYbSwwf/w8hz8+ig2b3S+3d+8+vvWtb/LMM8+wb98+FTUTERERucdo2fYGtGxb5PY1Gg0+++wzPvnkE44ePcrHR45wdnoaay1xdTvh8AHiwd3gPKC/xwubOM0FnJWLZBZO4yydB2B0dKwbpB955BG12xIRERG5g7TnuU8UnkXWi+OYer3O6upq99xoNLr3y8vLnDhxgo+PHOH0qVN0fsYYv0iYHyIpbSMa2ofNae/vVcIG3vxpvPmTuEszkMRUKlV+8ze/wRNPPMGhQ4eoVqsbv4+IiIiI3DSF5z5ReJYHSaPR4NNPP+X48ePMz8+zsLDAwsIC8/PzzF2eZ3FhgZWVZTb6uWGyecLCMElx7bDZ4l36LraIOMBdmMabP0VmaRobtjDGMLV/P089+SRPPPEEX/7yl/G8B3TWXkRERKRPFJ77ROFZtqooijh58iRHjhzhyJEjfPTRx5w8eWJdMDaZHDaTJ3Z9rJfDZnLp2fPBzWLdTPfce42bXeu7LF+cTXBWZ9MwvXQWZ+UiWEu+UOTQ44+xZ88ehoeHGR4eZmhoiOHhYQYHBxWsRURERG6CwnOfKDzLVtFoNPjoo4/44IMPeP/9D/jk6CeEQQCkITksDJOURtKZ4sIwNpvvf4so6Y+ohbs4g7t4huzKeWxzGa74WZ5WCK9Rq1Wx1pIkliSJSRKLtQlxnGCtxfM8yuUSlXKZYrFIuX0ulUqUy2UmJyd5+OGHKRQKm/TNioiIiNxZalUl8oCr1+v8+te/5oMPPuCX77/P0U8+IY5jMAZbHCYa3E9cTAOz9SuaKb6feD7x0CTx0CQBgE0wYRMT1jFBvX1eZTaoM7fYBEz7FyFe+5+zwRoDxmDCGC41cc4v4SQhJg4gamGjsPvljDFMTu7lK195hIMHD3Lw4EF27NihiuAiIiLyQNHM8wY08yz9Zq1lcXGRmZkZVldXyWQyNzw8z+seV4aV5eVlZmZmOH/+POfOneuep8/OcPbsNEkcg3FISsNEpXGSyhhxeTRdVi1yIzaBqIm7OoezchF35QLe6iw2SlcrlCsVvvroozz55JM89dRTjI6ObvKARURERG6PZp5FNllnmfTZs2c5e/YsMzMzTJ89y7mZczQa9dt6T8d1cV0Xz/NIkoRWs7nu48bLYv0yUbZEMvoIcWWcpDQKbqYf35I8SIwDmQJxrUBc20kI6Qx3YwF35SLhykXeevcwb731FgC79+zhG08/zdNPP80jjzyi/dYiIiKy5WjmeQOaeZZbMTc3x89//nPeeust3n33PcKwvafYcbG5ClG2hPXLJH4FmyunhbeSBGNjSBKwMdgY071O0sCSJO3r9DVjEwCSbBHrl9vvWVahLrm7rMU0F3EXzuAtnMFdOQ9JQr5Q5Mknvs7jjz/O1NQU+/btw/f9zR6tiIiIyDWpYFifKDzLjVhrOXXqFG+99RZvvvkWn3xyJK1WnSsTVncR13aS5Aew2YJCrWx9UYC7NIO7cIbs0jS2tQqA4zjs2LmLh790gKmpKfbv389DDz1EqVTa5AGLiIiIKDz3jcKzXMlay/Hjx3n11Vd55dXXmDk7nb5eGiGs7SIa2IXNDyosy4PNWkywgrM6h1Ofw1mdJdO43A3UAJ7n4efy5PM5crk8hUKeYqFAPp/H930cx8EYc9XhOA75fJ6hoSEGBwfXnavVKq7rbuI3LiIiIvcb7XkW6bNTp07x6quv8vIrr3Dm9GkwhriynWjPN4hru7F+cbOHKHLvMAbrl4n9MvHgHgBaAGE9LUJWv0wQtWgkEQtxiFmNYGkVkyzg2hiTROn7dH/Ba3vuLURBt3hZL8dxqNYG2Du5pzvDPTU1xc6dOxWqRURE5AtReBa5jiRJOHHiBD//+c95+ZVXOHH8ePp6ZZxwzzeIBichk9/kUYrcZ3qKkH1hcZS25QobPW26GrSCVS5/cor33v8Akjj9stks+/bt40A7UE9OTrJnzx4qlcoXH4eIiIg8EBSeRdqCIODo0aP86le/4vDhDzn84WHqq+kS06Q8Srj7KeLBSWxWM8wi9wTXw7oVbO7qABxAWoyvOY+7OkdYn+Pjs5c5euyn2KjVfa5WG2Dv3slumJ6cnGTbtm3k83ny+TyZTOam+llbawnDkCiKcByne7iuq37YIiIiW4TCszyQlpeXOXPmDNPT05w4cYLDhz/kyCdHiMIwfaBQIyzuIBkdI66MY30VNhK57zgOtjBEVBhae62zF7uxgFOf51JjnvlPz/D+rz7ExuHVb+G65HJre7JzuRxRGNFstQiCgCBIz2EQcL0aIsYYTDtMl0pldkxsZ2JigvHxcSYmJti+fTvj4+MMDQ0paIuIiNzDFJ5ly0qShJmZGT777DNOnTrF9PQ0Z85Mc/rMaVaWl9ceNAZbHCEaOkBcHiMuj2o5tshW1bsXu710PIC1UF2fx0RNiANMHEES0opDFpMIsxrCcjPtge3ksE4J8i4UPazjguNhHQdj7drebJv0XFsaUZO5U3N89NlJbHNl3dCyvs/evXv50oED7N+/n/379zM5OUkmoz7tIiIi9wKFZ9kSoiji1KlTfPrppxw7doxPPz3GsWPHaDTq3WdMrkSULZPkJ0gGKli/SpJL+y3j6F8FkQdaT6i+a5IY01rBaS1hmsuErUU+OnuZo8eex0Z/AYDreeyd3MuXvnSAhx56iJ07dzIxMcG2bdtUAE1EROQuU2KQ+1a9XufNN9/khRde5INffdBdcm1cj7gwRFzeTTI2RFIcJsnVwNX/3UXkHuK42HyVOF9d/7q1mNYSzuoszuocn1yc5bOTL2HDH3cfcV2PsfExdrXD9MTEBAMDA/i+3z2y2ey6686ScGvtuiXm1locx6FYLOL7vpaOi4iIXIfShNxXoijil7/8JS+88AKvv/EGQasFuTLh0AHi4jBJcQibq6bLKkVE7kfGYHNV4lyVeGgfIbSXldfTUN1cwjSXOFVf4uzhY5hfvIuNrt6vfTscxyGXL1AsFigWS5RLRYrFIoODg4yPj687tEdbREQeNArPcl84duwYL7zwAi++9BIL8/OYjE8wMEk09BBJeRT0FzgR2cqMwfpFrF8kqYx3X25BGqzDBkSttD92EnfP2AiTxNDpm732ht33BcAmmDiEOEj3eMchZiHAzM3hJOdxwg+xrdV175DJZBkdG2WiXfBsbGyM0dFRxsfHGR0dZXBwUOFaRES2FIVnuacdOXKEf/Gd7/Deu++C4xBVdxJNPZYW+tE+ZRGRNFhnC5AtcO16332SRO092svtPdrLnFxZ5syvP8f55a+wYXPd45lMlm2j29g2MkI+n29XLU8P3/fJ5/P4vg9AGIaEYZhWLm9fdw5rLUmSdM9JkqTDSRIcx6FSqXSParW67n5oaIhKpaIQLyIifaH0IfekkydP8p3vfIc333wTk8nR2vUE0fB+yOQ2e2giIg8mx8Pma8T52rU/HgftcL2CaS0TBCucqq9w+rMZHBvjJFE6Ax5HaVuwJL7G13AxjguOC8YFx+luw7GYnlVG7WubYKJWGtyv9X6A7+fYNjrK9vGx7ux45zwwMECtVqNYLCpgi4jIhhSe5Z4yMzPDv/yX/5IXX3wR3AzBxGOEY4+Al93soYmIyI24WWxhkLgweHPP2wTi9nJyx01D8u0GWGvTmfGolbYaa59NUCcMVlhdXuH03LVnyAE8z6NcqTIwUGOwHahLpRKO42CM6Z57r5MkIY5joihad+4c2Wz2urPtpVKpu8S9Wq0quIuI3CcUnuWeMDs7yx//8R/z4x//mMQaWmOPEI5/VTPNIiJblXH694tRY8DNYN0M1i/d+Nk4TGfIgxVM2ISoQRA2aURNLs01cC6cxo0/hTgAy1qfbmx6Iq1WboxpB34nnSGnc27Pinf2mndm2q8jk80yOjrK9va+8bGxMbZv386OHTvYsWMHhUKhP39GIiLyhSk8y6ZqNpt8//vf50/+9E8JgpBwZD/hxNew2eJmD01ERLYiN4MtDBAXBu7e17QWbAxxhOnMkLdWMMEyYWuFkysrnPn4OM4HH2KDxrpPrQ0MsnvXTnbu3Nnt8z0yMsLQ0BCDg4N4nv4qJyJyt+gnrmyKJEl4+eWX+ed/8AdcnpsjGpwk+NLXsbnKZg9NRESkv4wB46X7xiGdHS8OXfvZOOy2JHMai1xqLXH5+HkOHzmGDepXvK2hVK4wPDTEyMgwQ0ND1Gq1bn/vznLxK/t/ZzIZMpkM2WwWz/O6r2WzWQqFAo6jdo8iItei8Cx33Ycffsj//U//KZ8ePYotDdN8+O+QVMY2e1giIiKbz81gC0PEhSGuKoEWBTitJUywigkbmKBOENaZn69z/NIJnOhjCJrYq1qT3TxjDLl8nlKpTLlcolqpUCqVKJfLVKtVBgcHGRwc7M58Dw0NUSqVtG9bRB4ICs9y15w7d45vf/vbvPbaaxi/SGvvt4iGH1KPZhERkZvhZUm8YSgO3/g5a7t7rtf3/m5f2xiSBGyc9gG36TVJjIkDgqjFUhxg5lqYizO4SYiJg3RJ+TWqmmcyWWoDAwwODlCrVqnVat22YdVqtXvt+353hrt39juTyaxbft4bxDvXrutqRlxENp3Cs9xxs7Oz/OAHP+DPf/hD4sQSTHyNcPxRcDObPTQREZGtxxhwPXC9bu/vvvQAtzZtSRbWMUEjPYcNgrBOI6hz7twK7vQcTtSEqImNrl8o7Xa4roeX8brBO5PJks1m8f0stWuE9c51rVZjcHCQgYEB7REXkS9EP0HkjpmZmeFP//RPee7554njmHDoIcIdh7C+ioGJiIjcd4wBz8d6PjZ/EwXX2sXRiJqYsNWe8Y7bM95rs93YGGPb8d5eK+bbdHY8Sda/R5RAGMNyC+fCNG6cfi0bXN2OLB1+ukd8aGiIkeGh7tLzWq1GpVJZd5TLZSqVCpmMftEvImsUnqXvTpw4wfe+9z1eeeUVLIZgeIpw/FEVAxMREXmQOB4260G22J+Z75tlE4iCbt9vEzbaR50gbLT3iJ/EjY5gW/X0+evI+j7Z7FqxNT+bxc/55NoF2DpLzjOZDK7rdu87R6dwWy6XI5/PX3UuFouUy2VKpZJmxUXuA/q3VPrmyJEjfPe73+Wtt97CuBmCbQcJxx9R2ykRERG5e4wDmRw2k8NSvfGz1qYVzuNWe5a8Hbij9D6MWqx2ZrpbMTQimF/BJAsYm+DYGEjaM+k9R5LuK7+V4m1pobYS5XKFSrlMpZKG6s7RG7RLpdI1q6l3Ar0KuIncGQrPctustXz++ee8/vrrvPbazzh9+hQm46d7mkcPQia32UMUERERuT5jwMtivSzWL/f//a1tF2qLMHEESZgWb4sjTBJiogDiFiYKCOMWy1HA+cstzKXzuMlpTBxC1MJGwS18S4ZMNovrut3DcdauPc9NZ8u9DJlshmx7D3lnBt3zvO7MeD6fp1AorLsuFArrQn2pVML3/f7/2Yncg7ZEeDbGrFhrS5s9jgeBtZYjR46kgflnr3P+3AwYQ1IeI9z9NNHIFLjZzR6miIiIyOYzJi2Q6maw7e3Tt7WE3SbpDHkUYOJWuiw9CXsqqXeqq6fnIElnxLG2Z0bcYsIEApvuN7dNsHVMkmBIMLZztPeVx2Ea2m+wrL0jk8lSKBYpl9O2ZqVikVKpRKFQoFgsrjtyuVy70NvVs+a9ldg7y+BVZV3uJVsiPMvd8b3vfY8///MfMjt7CYxDXBknmvwtooHdkMlv9vBEREREtibjrBVr4w7MkF9PJ3zHYRrW4xATp63LiFqYOMBEAUHcoh4FzK0GmMUFTHIJJ4nazwXY+PYrrzuOg+t6uO195JmMh+dlyHQqr3udtmfr25/1nq/VHu3K605g9zxv3ax972GM6Z4dx8FxnO5r6TjdK2b8nXWfK/e/LRWeTfr/yv8d+Fukv9j736y1/9oY88+Bn1prf2SM+SEwb639T40x/xkwaa39Hzdx2PeNP/pX/4qmUyDc+800MHtaorMVZU+9jbM6t9nD2Hraf8GwXlarM+S+kRSHCHY/vdnDEJHNYgwYFxwXS7od7wvNnMdBumTdxmvL2dfNmsftWfEr95G3K7J3+pInCaYZQz0B2wLbwCRxewY9TmfQe98vibBxfFOz6HeCMQavp71a5/D9LH7WJ5/PdZfH9y6Z710231kyf+WRy+U0O38XbanwDPw94DeArwLDwC+MMW8AbwDPAD8CJoDx9vO/BfxgE8Z534pqO4hG9m/2MNZR2Osvpz6X7rGSvsrn8/z27/w2zz33HI3ly5s9HJGb4tTn9PNVRO4bFoM1HhjgunnStn8DYHtao/Verz1juPq1dffXfN+ej1mLzRaIK9tp2Xgt0McxZjWG5QCT1DE2TmfqkxDiKF0yfwt/F8tks+T8HH43eOcotMN3p4hc7wy87/u4rsvQ0BC/8zu/o1nxW7DVwvNvAd+31sbABWPM68DXgTeBf2KM+TLwMTBgjBkHngb+8ZVvYoz5R8A/Ati1a9fdGruIbGG//du/zT/+x+mPmz/7sz/b5NGIiIg8qEwarrvn6+tHi7WkOES489BtfGKCiRqYoI4J6z3n1e61E9QxUZMwCAiDgOXlpVv+Mk888QTj4+MbPyjA1gvP1/xXwFp71hgzAPz7pLPQg8DfB1astcvXeP5fAP8C4NChQ3e1NaHcOi0p7K/cx8/iLp/f7GFsOc8999y6s8j9ICkM0fzy39nsYYiI9IdtF0vrtB9Lku696Sms1lkubrrXlm4Btu4Mc4LpncG2Sfu6XZzNrj2fOfNu++u1v1bPcnLTLvrm2KhdiT1szzzffJuzrO/j+51+4uns841mnrPZLJ7nMTg4yNjY2B34g966tlp4fgP4L4wx/4o0IH8T+O/aH3sb+CfA3wSGgD9rH3ILvIVpbH6AaGAXeGpFtRUlxaHNHsKWtBIH/Jsf/RTr5aG8Qd9RkXuEfh6ISF/YJK39EYftNl3R+krhdm3vcze4Jmv7nWlXAifpub/y492q4XF6dPc8JxBH2GRz9zxnstn2nudOkPXxs2nl8UJhbX/zlXuer7ffufd57Xm+e7ZaeP4h6VLsX5H+Tui/t9Z2ptDeBP49a+1nxphTpOH6zc0Z5v3pH/7e7/HnP/wLZo+/gd+ptj2wh2hwN2QKmz086RPN5IuIiAiwNlMbR2nwTa6ott1pnRUHmO59gJOEOEkIcQDRre3fvZLT7U/t4bpetzK2l0t7VWcz+fZr3roZ1mtV3b5RxW2vXc27t1p2595xHDzPu2aV7c5r16rO3Xm987zc/4y1WpV8I4cOHbLvvvvuZg/jnmGt5ZNPPmn3ef4Z52ZmAEgq44QDe4iGp8BTJWERERGRvunM3LbD6Vqf554Z256ZXNOZZb3mUuLkitndGIPt9nhOZ3jbRaui8Ob6PGezFIslSqVS2uu5VOr2dS4UCut6Pudyuev2eO4cnSDreZ5mVeWuMMa8Z63dcHO6wvMGFJ6vz1rL8ePH0yD92s84deokJuPT2vZlwtGDkNGybhEREXmAWdsOtiEmbrdmitv3SYSJAohb3Vnb7gxu3MJN1mZ4bXTzM7edJcJp8Lx2v2LPc8lmst3+yGn/5LXZ12u1Suq9LpfLlEql7pHNauJE7m8Kz32i8HzzPvnkE7773e/y5ptvYtwMwcgBwvGvYLPFzR6aiIiIyNWsTfsPtwMrUbMdZNeO7qxup9BUt8BTOlPb3Y/bs/+WJD1scvNFn/L5AsVSiUqlTKVcptw+OgG1WCyuC6ydYlCdWdvOjG5nebGI3DyF5z5ReL51J06c4Hvf+x6vvPIKFkMwPEU4/ig2V9nsoYmIiMhWZ5N0WXPUTI+wmbb4CRvpEdRxogZu1MC26jdcluz7uXYl42y3yFMu5+O3z1fO2GYyGVzX7b7m+z65XK5bBOrK63SZc5lisYjnbbVSRCL3D4XnPlF4vn0zMzN8//vf59nnniOOY8Khhwh3PI71S5s9NBEREbnTkggTtjBRMy0uta5FUGeGtqdl0FV6/o7aftas+5zOe0Q4UQs3CSBsYsPmNYdjjKFcqTI0NMTI8BBDQ0MMDg5Sq9WoVCrdo1wud8+ZTObO/NmIyD1F4blPFJ6/uNnZWX7wgx/w5z/8IXFiaY19hXD8UXD1HyQREZH7hrXpntygM4tbx4R1nCC9Jmrixi2cqJWG2C9QYflaPM/Dy2TwvEx3r27a7idLtVqhWq1SqVTWheFarUa1mgbmWq2m2V0RuSaF5z5ReO6fc+fO8e1v/z+89tqrGL9Ic+LxtDq39uWIiIj0T7dIVaf68lpf3XV7dzszvjZu989N2xGtFa9q4cQBTpxWeLZhM/28K2QyWWoDAwwNDVKrVqlecXSCbC6Xu26roE7LH2Ddft3Ode/HRUT6TeG5TxSe++/DDz/kn/6zf8bRTz7BlkZo7nySpDK22cMSERG5t0UtnNYyJlhtz/7Wu3t43aiBEzawYeOaAfdmGWPIFwqUSmXK5RLVSqW7L7dSqXSXOveei8Wigq2I3NcUnvtE4fnOSJKEl19+mT/49reZm50lGthDsOsJFRUTEZEHWxziNJcwzSWc5iKmuYjbWsJtLWGDxrpHr9zDOzw8TLVavaqPbu/9lTO+nSJXndcLhYL66orIA0fhuU8Unu+sZrPJD37wA773J39CEISEI/sJJ76m9lYiIrJ1WNteMh1hkvay6NYKJljBaa1gWiu4wQpOsHJVsauBwSF279rJzp072bFjBzt27GBkZIShoSEGBga0h1dEpA8UnvtE4fnumJ2d5bvf/S4/+tGPSKwh2PYwwfavQia32UMTEZGtJA4xrTSomrCR9vUNm+ny56iJ0y56RRQANg2+0D7b9v8sBgOOA6ZzmPXX7bBMHN2wcFbW99m2bZTt42OMj48zOjrKxMQEO3bsYGJigkKhcFf+WEREHmQKz32i8Hx3zczM8Ed/9Ee88MIL4GZojR4kHPsKeNnNHpqIiPSTTSCO0mvHAePefgFJa6Ezoxu10kActdJ+vu0Z3nRmd/WabYw8z6NSrTEwUGNwYIBarUapVMJxHIwx3XPvYa0ljmOiKLrmube/b2fZdOe6WCwyNjbG2NgY1WpV+4VFRDaZwnOfKDxvjpMnT/KHf/iHvPHGG5hMjtbYo4Qj+zUTLSJyr4qC9jLk5XRmt7WCaS1jwgaujTE2nYUlCbFxdO2iVsbBuG4apJ32gWmHaoM1pPd0zhYTNbFh67pFsvxcjtHRMbaPp2F1dHSUsbExtm3b1u3xWygUFGBFRB5gCs99ovC8uY4cOcJ3vvOHvPvuL8BxiKo7iYYeIh7YCY72eYmI3DVJhGktp6G4udQOycu4weo19+pmMlm2jY4yum2EfD7fnX3N5/PdczabxRhDGIaEYUgQBOuuoygiSRKstVedrbU4jtNtg9Q5elsjDQ0NUS6XFYxFROSGFJ77ROH53nDs2DFeeOEFXnzpJRbm5zGeTzCwh2j4IZLymHpFi8iDy9q1vbvdolTx+j6/NgbL2qQtrN0YAzbBxCHEwbqziQOcJMQJ69hWfd2XzWSyjI6NsWNiO2Nja/t1O8uRBwZzdWSPAAAgAElEQVQGFFpFROS+oPDcJwrP95Y4jnnvvfd48cUXef31N2i1mpArE9Z2ExeHSArD2Hw1LdgiIrJVWJv29W0t9rQxWsILljHNpRsWpLoVjuOQLxQpFAppb99SkWKxyODgIOPj4+uOwcFBhWMREdkSFJ77ROH53lWv13nrrbf46U9f4INffUAUpn95NK5HnB8kLgyRFIdIisMkuSq4mU0esYjITbAW01rCWZ3FWZ3FXZ3Da1xetyza8zzGxsfZ2W5dNDExwcDAwLpevr19fjvLo9O3t92jw3EcisXiuudEREQeFArPfaLwfH+IoohTp05x7Ngxjh07xqeffsqnnx6j0VhbZmj8EpFfJvEr2FyVJFchyVWxubL2T4vI3ZdE7cJay+09xEu49cu49TlsFABpSN67dx9f+tIBHnroIXbu3MnExAQjIyO4rrvJ34CIiMjWoPDcJwrP968kSTh37hzHjh3j9OnTTE9Pc+bMGU6fPsPy8tLag8Zgi8NEpVHi8hhxeRQy+c0buIjcfdamQbYxn+4fTsL23t8Ik4Rpb+AkgjhMt4U4HtZx01+8OS62fca4pI2Ak56+wJ1ewQkmbOK0lvHCFWxzZd0Qsr7Pvr37OHBgPwcOHGD//v1MTk7iefrlnoiIyJ10s+FZ/0WWLctxHCYmJpiYmLjqY8vLy0xPTzM9Pc2JEyc4fPgwHx85QnT+1+kDhRphcRtJeYy4sh3rl+7y6EXkjugJyU5jHtNYwGsu4DQWrrlv2HFdcrk8+XyefDFPPl8gCiOarRZBENBqtAiDgCBocb1fRqd9gt10aXSpxI49E0xs/yrbt29nYmKC8fFxtm/frj3EIiIi9ziFZ3kglctlHn74YR5++OHua0EQcPToUQ4fPszhw4f51eHD1C99CkBS3kY4uJd4cBKbLW7WsEXkViQxTmMBpz6HszqHW5/DbVzuLokGqA0Msu/AJHv2fJPJyUkmJycZGRmhUCiQz+fJZG6uVoK1liiKCMMQ102DcudQIBYREdkatGx7A1q2/eBKkoQTJ07w9ttv8/LLr3D8+Ofp65VxwsFJosE9kCls7iBFHmRxhAnr6RE0eq7reI15TGMekhhYvyR637597N27lz179lAulzf5mxAREZHNpj3PfaLwLB2nTp3itdde4+WXX+H06VNgDHFlnGhgD3FtN9bXjLTIhsI67uocTv0yRK10X3ESrZ2TENd2ehN3/vvUPvfeR8G6GeQOx3Go1gbYt3eSqamp7rFjxw4V2BIREZFrUnjuE4VnuZbjx4/z6quv8vIrrzJzdhoAWxohrO4kHthNUhgELdWUB5m1mGCl3W5pDqc+R6ZxGdta7T7iZTLkcrnunuJCIU+xvVw6m812w25n6XPvkc/nGRoa6h6Dg4MMDQ1RrVZxHPV5FxERkZun8NwnCs9yI9ZaTp06xV/+5V/y5ptvcuTIkbRoUK6cBunaLpJ8Ld0nrTAtW10U4C6dxV04Q3bpbDcoO47Dzl27+NKBA0xNTbF//34eeughSiUV4hMREZHNp/DcJwrPcisuX77Mz3/+c9566y1+8Yt3CcP2slLHhVyZKFPC5iokfhnrV7AZH5IYY5N0b6aNMUkCNk5b3SRJ+rHOffswSQJA4hex2TI2VybxS+D6Culy91iLaS7gLpzBWziDu3wBbEK+UOSpJ5/gscceY2pqin379uH7/maPVkREROSaFJ77ROFZblej0eCjjz7i7NmzzMzMMDMzw/TZs8ycnaHRqN/We7quh+u5eJ5HkiQ0G411HzdeFuuXibIlknyNpDye9q12b65isMgN2QTTmMddvoizcpHMygVopj3T90xO8o2nn+app57ikUceUW9iERERuW8oPPeJwrP0m7WWpaUlzp49y+rqKplMhmw2SyaTuerwPK97dl33qpY3y8vLnDt3jvPnz3fPMzMznJ05x/T0GZI4BuOQFIeJymMklXHi0ih42U367uW+YROImmlxr+ULuCsX8eqz3SJd5UqFrz76KE8++SRPPfUUo6OjmzxgERERkdtzs+FZUwMid5kxhmq1SrVa/cLvVS6XKZfL7N+//6qPNRoNfv3rX/PBBx/wy/ff55MjHxGfOwzGYIvDRKVtxMURktII1q9ouff9zCaYsNlu07SKCepr11ErfcY46862fTY2gTjAaR8mDiFqYeOw+/bGGCb37uPRr/xtDh48yMGDB5mYmFD/YhEREXmgKDyLbFH5fJ6vf/3rfP3rXweg2Wzy0Ucf8cEHH/D+++/zydGjBOc/AsBkckSFoW6YTgrD2Gx+LXDJvSVq4S6exV2cJrt8Htta7mnjlDLGUK0NUKtWsViSJCFJYpKkc51gbYKX8SiXy1TK2ygWi5RKpXXH3r17+dKXvkShoJ7mIiIi8mBTeBZ5QORyOR5//HEef/xxAKIo4tSpUxw5coQjR47w0Ucfc/LkYZJ2MTJIQ7XN5IhdH+vlsJl8evZ8cDNYN9s9WzfT81pWM9n9ZBOclVncxWm8pWmclUtgLflCka8/8Ti7d+9mZGSEoaEhhoeHGR4eZmBgQPuORURERPpIe543oD3P8iBpNBocO3aMzz//nPn5eRYWFlhcXGR+fp65y+n9yvISG/3cMNk8YX4oncUuDpMUh9N2XXLz4gB3YRpv/hSZpbPYsIkxhv0HDvDUk0/yxBNP8PDDDysgi4iIiHxB2vMsIrcsn8/z6KOP8uijj173mTiOqdfr3WN1dXXd/fLyMidOnODjI0c4dfKDbtA2frEbqKOhfdhc5W59W/ePsI43fxpv/hTu0gwkMZVKld/8d/4tnnjiCQ4dOtSXvfIiIiIicusUnkXklriu2y1UtpFms8mxY8c4evQoR48e5eOPjzA9/Uuy0+8RV7YTjuwnHtwDzgP4o8haiJo4jUWc1Ytk5k/jLJ8HYHR0jG/9h/8B3/zmNzl48CCu627yYEVEREREy7Y3oGXbIv114cIFfvrTn/LjZ5/l4oULmIxPMLiPaGQ/SXF4s4e3Jg5wmkuYxiJOcxETrKYF1BwX67hp4Deda7d97YDxwHGwpv264wIGE6zgNBYxzQXc5iJucxEbNrtfbu++ffyNb32LZ555hr1796qStYiIiMhdoj7PfaLwLHJnJEnC+++/z7PPPsvrb7xBFIbY4jDB8H6i4b3g5e7OQKzFNBdxF6dxGgs4jUW8YAnbWu0+YoyhUq0SxwlhGBCGYdpD+zZUawNM7tnN7t272bVrF7t372ZycpKRkZF+fUciIiIicgsUnvtE4VnkzltaWuKll17ix88+x/HPP8M4LmFtF9HIfuLqRP9bZiUx7tI53IUzZJbOQGMJgHK5wq5dO9m9ezc7duxg586d7Ny5k4mJCXzfX/cWURQRhiFBEBAEAa1Wq3sfhmH3CIKAKIoYGRlh165dN7XcXURERETuHoXnPlF4Frm7jh07xk9+8hNeePFFlpeWMH6R1uA+opEpbH7g9t7UWkxrqScwz2DjkEwmy2OPP8Y3nn6ap556ivHx8f5+MyIiIiJyz1N47hOFZ5HNEYYh77zzDs89/zzvvP02SZJgS9uIiiMkfhGbLaWHX8RmCmt9pZMEpzGPU5/DWZ3Drc/hNi5jowCA4ZFt/NZvfoOnn36ar33ta+Ryd2l5uIiIiIjck9SqSkTua5lMhmeeeYZnnnmGy5cv8/LLL/PiSy9x+vRxmo3G+ocdB5MtYV0PGouQpPuRs77PQ/seYv/+p9i/fz9f/vKXmZycVDEuEREREbllmnnegGaeRe49KysrXLhwgYsXL3Lx4kUuXLjAhQsXWFlZYc+ePUxNTTE1NcWOHTvU5klEREREbkgzzyKyZZVKJUqlEvv27dvsoYiIiIjIA6LPJWxFREREREREth6FZxEREREREZENKDyLiIiIiIiIbEDhWURERERERGQDCs8iIiIiIiIiG1B4FhEREREREdmAwrOIiIiIiIjIBhSeRURERERERDag8CwiIiIiIiKyAYVnERERERERkQ0oPIuIiIiIiIhsQOFZREREREREZAMKzyIiIiIiIiIbUHgWERERERER2YDCs4iIiIiIiMgGFJ5FRERERERENqDwLCIiIiIiIrIBhWcRERERERGRDSg8i4iIiIiIiGxA4VlERERERERkAwrPIiIiIiIiIhtQeBYRERERERHZgMKziIiIiIiIyAYUnkVEREREREQ2oPAsIiIiIiIisgFvoweMMX/zZt7IWvvqFx+OiIiIiIiIyL1nw/AM/L838YwF9n7BsYiIiIiIiIjckzYMz9baybsxEBEREREREZF71S3veTbGZIwxzxhj/kH7vmiMKfZ/aCIiIiIiIiL3hptZtt1ljPkK8COgBewA/jXwLeD3gH/Q99GJyAPLWkur1WJ1dZV6vU69XqfRaNBqtQjDkCiKiOOYKIrWHQCO4+C6bvfce53JZPB9n1wuRzabJZfL4ft+98jlcjiOaimKiIiIyHq3FJ6BPwD+Z2vtd40x8+3XXge+099hichWEUURi4uL646lpSWWlpZYXl5eu15aYnFxgZXlZeqNBo1Gk8TaTRlzzvfJ533y+Tz5fIFCoUihWCSfz1MoFCgWixSLRQqFAqVSqftaoVCgXC53j2w2uynjFxEREZH+u9XwfBD4XvvaAlhrV40x+b6OSkTuWa1Wi4WFhXXH/Pw88/PzLC4utl+bZ3F+noXFRVbrjeu+V8aBkm8oeQlFN2Ywk7Aja8kXLDnXkvcsOZf2Ob3POhbPAdeA61hcA1772jPp+yYWEiC2kFiT3tv0PkoMQQJBbNIjgSBJr1sxtGJDK27SjA3NGJpLhua84VLi0IxdmrGhEUEj3DjY+9kMpVIpDdOVKpVKhWq1SrVapVardY/e+3w+jzGmT/+0RERERKRfbjU8nwQeB97tvGCMeQL4rI9jEpG7zFrL4uIis7OzzM7OcvnyZS5fvszc3Bzz8/Ncnptjbi59/Xph2HOg4hvKmZiyF7MrYzk4lFAes5Qylko2oZxJr0uZhFLGknXvynd3R941sdCMoREZmpGh3nOsRobV0GE1arIarrBav8DqkuFM5PFx6LAUWOLk2u/rZzPUalUGB4cZGBxkcHCQgYEBBgcHqdVq3ftarUalUtEScxEREZG75FbD8/8EPGeM+TaQNcb8D8B/Cfx+30cmIn0RhiGzs7NcunSJS5cucfHixW5IvnTxIrOXLjJ3+TJhFF/1ufmMoZa1VDMR2/2Eh4cSquNpEK5kLOVsQiWb3uddeJAmTB0DBQ8KnuVWA7q10IhhOXBYDg3LgcNSaFgODEuBw2KwwuLFc0yf9fgodFhqWa61gt1xHGrVchqmB4YYGBjozmL3znJ3jkqlgu/7/fkDEBEREXnA3FJ4ttY+a4z5W8B/TrrXeTfw96y1792JwYnIjdXrdS5dutQNx7Ozs91wfPHiBS5dvMj8wuJVn+d7hkHfMpAN2esnHJqwDPhJ96j6lmo2wb8rM8MPHtMN3gmjAFz9i4teiYWV0LDYDtdLPefFoMHS0iUW51zORC7LgbnhkvJrLSXv3addKpUolUoUi8XufbFY7J410y0iIiIPqluttj1srf0l8F/fofGICGmRrbm5Oebm5rrBuPd69uIFLs3OUm80r/rcYtYw5CcMZCN+o5gwOJgw6CcM5tLzQO7BmyW+3zmG9gy/Jd3NfWNRkobt5dCwEjosB6Z9f42l5LFHPXJYCaAZbTyDns/5FIsFioUixVKJQrHULaDWKaiWFlq7+rhWZfNsNovn3eoiKBEREZG771b/xnLaGPMz4E+Av7DWrvZ/SCJbV+/e4k4g7swYz87OMnvpIrOzl1hYXMZesU7XNVDLGWrZiG3ZmAPD7TDsp7PGg7l01lizxeI5UPMtNf/mwnZHlKR7uOvXOsL03IibNKIlGi1DY9WwEDucix0asUMjSgP4rRZJd10HP5vF97Nks1myWZ9sNovv+2T9XPu1bPc13/fXXfcenZDee/S+ls1mVZBNREREbsuthuddwN8H/ivg28aYZ4E/BX5irY36PTiR+029Xuf8+fNcuHCBixcvrj8unOPSpTmCMLzq86q+oebHDGQjJgqWgYE0DNf8hIFsGo7LWYujv/PLHeQ5UM5aytnbL7JmLYRJWrW8U7G8c92K1lc371Y9TyCI64SJIUwgDA1hC4LF9POXrUOYOASJIexWS4cgvvWg7jgO+Vw6613I58nl8+QLxXWz41cG7iuvrxfSFcxFRES2NnPl7NZNf6Ixu4DfbR/j1tqRfg7sXnHo0CH77rvvbvygPBCiKOLcuXNXHzMznDs3w+LS8rrnjYGBnGEoGzGYixnqXT7dXkJdy6atl0Tk1th2+7He1mOtpNNurHNcfd9sXzd7Pt5MXFqJkz4TQTO2hDfein4VxxhyOZ9cziefawfzfIF8oZCG9Z5+4J2j9/7K/eWZTObO/MGJiIjIOsaY96y1hzZ67otsNBttH8PAwhd4H5F7SpIkzM7OcubMGaanpzlz5kx6ffoUM+fPE/f0GHIdGM7DiB/yWDlhZCRhOB8znEsYagdjV8FY5I4w7R7fnnN7Vc83kljWhe11vcCT9Dq4Kqg3us+3lqA5b7icOLQSh2Z7aXsjtCQ3MdRsJkOxWGgXcStT6ino1hu0r/daPp9XgTcREZE+utWCYV8G/iPS2eYc8G+Av2ut/es7MDaRO255eZnPP/+czz//nOPHj/P5559x4vhxGs1W95msaxgrJIzlQ35jZ8xYIWE0nzCSjxnwtZRaZKtyDOQ9yPc5mHeWtjdi0+0T3ojbe8qjtfNq1KQRrVAPL1G/ZJg/53A2dtt70NNl6zcev6FQyFMqpsXdypXquqrqvedyudxtZ1atVlVZXURE5Bpudeb5L4H/D/hHwKv2dtd8i2yCpaUlPvroI37961/z6aefcvyzY1yau9z9eClr2FEMeWYkYnsxZryQMFZQQBaR/jIGsi5kXUv1C+wvDxPWgnbYG7rXzvWwQSOaZ3XJsHrZYTZ2qUcOqwG0bhC+HWMolYpUKxUqtRrVao1arZb2FK+tXXf6ig8MDJDNZm/7exEREbkf3Gp4HrXWBndkJCJ9lCQJp06d6oblX394mNNnpoF0NmlHKWF/MeTffihmZylmVzmmlrVq3yQi942MA9Xs7QfwKKEdsNOgvRwaVgKHldC0jyYr0WVWzhmmT3scCR2WWpbrZe5CPsfAQI2BgSEGBge7oboTuKvV6rrD9/0v8N2LiIjcfbcankNjzO+TLt0ettY+aoz5JjBmrf03/R+eyM27cOEC77zzDu+88w6/+uB9VlbrAJSzhocqLZ7aFzNVi5isROTUzklEHnDebYRva9PZ7qUgDdtLgdO+dlgMmiwFSyyfO8PJ0x5L7bB9vTVqOT9LpVKhVqtRrqRLxjv7tTtLyTvHlYXW8vk8rqsf5CIicnfdanj+X4B/F/i/gG+3X5sG/k/S/c8id00URXz44Ye88847vP3zv+TkqdNAWsDr64MtpnZHTFUjxgqJZpRFRPrAGChmLMWMZRyAG5ckTyyshmnQXg4Ny4HTvV4JmiyHyyxdPsfiRYdzsctqZFgNLNFNtCfP+T6FQo5ioUgunyeXL1yzpVhvb/Are4Z3rjOZDJ7nkc1m8TyPTCbTPTr3nufheV+kzqqIiNzvbvW/Av8Q+Jq1dtYY8wft104Ae/s6KpHrqNfrvPXWW7z55pv84q//mnqjgevAl2oRvzsV8NXhkO0KyyIi9wTHXNk7fOP+X7bdfqze3svd2cPdKazW6NzHTRrREo3IECxAay6tbB50Wo4laduxVmT7Vu7NMaYdol0yGQ/Py5DxPLJ+Ft/P4fs5su2w3gnnvu+vmzW/8igWi90Z9nw+r17hIiL3sFsNzy6w0r7u/Leo1POaSN8FQcBf/dVf8fLLL/Pzv3yLVhAymIMnh1p8dSjk4GBIXpMBIiJbgjHgu+C7lgH/i8fe3n7gYWIIEwhj070OEkOcQGghal9H1hC1n4+S9POjxBB1zgnrroOWIWyk77WSpCE+TJxuD/JmdOMCbR2u61DuLFuvVKhU1iqgd5a49+4b73xMPcFFRO6OW40czwP/hzHmvwEw6a9H/1fgx/0emDzY4jjm/fff5+WXX+b1n73Gar1BxYdvbmvy9FjAQ9VYFbBFRGRDvf3A137vf/ebhcRJ2jO8GdOdRW+2W5Ot9syyr4YNVsNZVs8bLky7fB6lRdwa4fXHXMjnqdUq1GoDVGsD6wJ2b+Du7jEvl7VnXETkNtxqeP5vgT8GFoEM6Yzzi8B/0udxyQPq5MmTPPfcc7z04gtcnl8g7xkOjTR5+kDAwYEIV21HRUTkPuQ6UHQsxQzcTngPE7qV0Hv3jqfXTVbCBZYvTHPurMunoctSYAmvs0reGEOpkE8DdbsVWe8Md++5Wq12+4CrQrqIPOhuKTxba5eAv2uMGQV2AWestefvyMjkgVGv13n11Vd59sc/5uMjR3ANfG044D/+SsBvDIdk9ctxERF5wGUcGPA7S9lvoqIa0IrpBu2VcK0dWXrfYDlcYOX8ac5NuxyLXJaDdI/49fjZDJVymUq1SqVa64bsSqXS3bfde985+76vvdwisiVsGJ6NMdea67vUProft9be3E9yEcBay4cffshzzz3Ha6++SrPVYqJk+d2pBr81HlC5zb6lIiIikvJd8PMJw/mb/5wg7sxw9/b87tw3WQ5XWF06z8plhwuRx2poWAmu3/8bIOO5a4XRKhXK5TRUd1qTlUolisXida9zuZzCt4jcE25m5jnixuuLTPvjmh+UDc3OzvLiiy/y3LM/5sz0WXKe4altTf7GRIt9lVhVskVERDZR1oVB1zKY27gyeoe10Ixp79lOQ3enRVm9/dpqVKfe3st96azDqchlNTTUwxsHbwDHcSgW8pSKRYqlEqVymWJxfdC+8nzltZaci0g/3Ex4nrzjo5AtLYoi3n77bZ577jneeecdkiRhqhbz+w83eXI0IKdK2SIiIvctYyDvQd6zDN9C6IY0eLcSaLSLp9XbgbtzNLrnOvXoMvVFQ2PO4XLi9nyOxW4QwDOeR7FYoFQsUipXKPXMfN9o1rtzXygU1OdbRDYOz9baU7fyhsaYD621X7n9IclWceLECZ5//nle/OlPmF9coubD397Z5JvbW2wvapW/iIjIg84YyLmQ+wKtyToz372BezUy1ENnXQCvR6vUo1nqs4aF8w4zcTuAhzfXSiznZykWChRLRUqlMoX27HehULjhuTeEa/+3yP3tTvwKbc8deE+5T8zOzvL666/z4osvcOTIJ93iX9/6asCjQ6GqZYuIiEhf9c58D91mG7Kod/b7mjPfhkbUpB4tU28ZGquG+djhXOzSiNMA3rxBsbUO13XSAF4opMvPS2mhtd4Z741mw9XXW2Tz3InwrEpPD5jLly/zs5/9jNdefZXDH36ItZad5YTfnWrym+MBVRX/EhERkXuY50A5ayl/gb+zJJZ2yO4J3/H6UJ5e19PzgqE+6zAXu9Qjh3rEDft5d/jZTHsG/P9n786DJD0T+s5/nzfvs7Kurqq+JI0kZpgZmAELGDAeBnt3BtAEY6/tNYMDJgwLu+E1A+slAq9NECw4NozBY4xtCMMCAV4CYyQ0OlqakTRSt5BmNDPqltStW+q7u0rddXR1XXm97/vsH+/7ZmVmZVVWterKqt9H8cR7ZtVTncqq/OVzhYE6X+jY0h2VbDa7Yj+TyeA4atEQ2SgN3pBbMjs7y4kTJ3jqqa/w8ksv41vLwbzl790RjGM+pG7ZIiIiso84BnIJSy6xOQF8sS2IN8aEexWW6guU65MsTRpmJxwmPIey56y7BRwgk06RzWTIZrNkcjlyuSCAt5dMeM9qJZPJkEwm1R1d9gWFZ1mXWq3GK6+8wsmTJ3nhhW/y5htv4lvLWM7ymduDwHw4r8AsIiIicquaA/jQLX6N5gAetXwH+2Z53zVUvApld46KayhPG5auG6b9GBXPBOdcS32d8785jkM2kyaTTgeBOpsjG7ZwR+E72u903KkokMtutBXhWf+X7wG+7/P2229z6tQpXnjhm5x++WWqtTqOgTv7PD5ze43vOlDnSF7LS4mIiIjsFpvRAh5xfah6QQivuIaKFwXv5W2lcS3ojl6tGspLhoVrhqkwjFddQ8Vd38Rsyz+HIZ1OBWE6nSYThvL1hvDmVvNoqzXD5b3aUHg2xvyitfa3Opz/59baL4SH/+um1Gz1OhwHftFa+4Ix5lHgx621s1v5Pfc613W5ePEiZ8+e5e233+add97hrTffYH5hEYDDecsnRqp8aMDlA/11suqvICIiIrLnxR2IO5ZcAjZjWiPfQtUjCNRhC3ewH4T0irccyKueoeqWqXg3g2uzUJ02TPoxqp6zHNzXsVZ4xBhDJgzkQQt5lmw217GLeqf99nPpdJpYLPae/12kdxjbbWG85puNmbPWFjucn7HWDmxqzVavw3HC8Lwd3++ee+6xL7ywLd9q2/i+z7Fjx3j11Vd5+603uXDhAnU36JeTcOBw3udovs639rt8aKB+y0tHiIiIiIhstWi29GoUqKOu52FID1rJl883Qnp0j+9Q8ZxGd/XaBpYrTyUTTa3dmaDLelsL+Vqt5el0uuVaOp3WjOo7wBhz0lp7T7f71tWGaIz52+FuzBjzg7R2zX4fMN/l8bcDXwKeBT4GvAz8MfB/AweAfwy8CvxH4NvCev2qtfZBY0wmvPeDwOtApunrXgDuAfLAI9baD4fnfxHIW2t/NQzbLwJ/AxgGfhL4v8Lv8xfW2l9ez7/BXnLp0iV+8zd/k0LKcHuuxqcOeRwtuBzNe4xlfS0nJT3jv76Z4eK8PvHdbNEENdm4JRPXh2ey+91W8PiJ95d3uhoiskMas6Vv0qI/frh2eBTIG9tG+G5qKXcrVLyF4Ny8oTJrmPacRiCvusEkbvUNTA0Uj4OG2ZoAACAASURBVMVIp1Nht/WwlTuTbQnczSWVSq04TiaTLdvm/UQiQSKRIBaLqRv7Bq23A+4fhts08EdN5y1wDfi5dXyNu4B/CPws8E3gx4HvB34U+JfAa8BT1tqfMsaUgG8YY54k6Aa+ZK39dmPMtwOn1lnnZjVr7ceNMT8PPEgQpGeAs8aYf2+tnb6Fr9mzPC/4OO2n3j/Pdx2o73Bt3jsFqP3r4nyMsqdPezZbJpPh3k/fy7FjxygvKJDI7ndxPqa/AyKyaySMTyLmk4/BbYPBh3vR+PFKW7f1jud8qHqLwX7dUK1AZdKw4Meo+A41P+zq7kJtA+PIN8PRo0f5jd/4DQ4dOrSt33e3WFd4ttbeAWCM+VNr7U/e4vc6b609E36dV4GvWGutMeYMcDtwGPjRsNUYgqB+FPg48DthPU4bY07fwvd+KNyeAV611k6E9TgHHAFawrMx5mcJQj5Hjx69hW8nItK77r33Xj7/+c8DcN999+1wbURERHrfesaP+xZqPlQbobp1PHgUtGueoeYvt4Av1A3zNYe5cLtYN1T9rWlRvnTpEufPn1d4Xo/24Bx24XattX+9jodXm/b9pmM/rIcH/H1r7Ztt3wO6z1DgAs3NT+lVvnfz923+3i2stb8P/D4EY567fO+edWoyQcKx3FbwKCVtz86ara56+9e/fiHPG7Nqed5sx44da9mK7Ha3FTx++Z6Fna6GiOwjng/VlrHWyy3J5SjwhuOr/9vbmeXW5aYx11U/RtWPHgvVda7RHXEch3QqGXbxTpPuyzCaTpNKZzp21472k8kk8XicZDLZ6MKdSCSIx+MtXbqjEo/HG9t0Os3Bgwe36F9199vobNsngH9prX3OGPNLwD8HXGPMf7bW/j/vsS5fBn7OGPNzYYv0d1hrXwSeIRgT/bQx5sPAt3d47DXggDFmEFgAPk0wxlo6GB4e5rajR/jrS5f564kUAMWU4WiuxtG8x9GCx+0Fl4M5H6dHA7XsD7cVNjCjh6xb2XU58chfcCBuyZT27OeHsofod4GIdFP3aZosbOXSW8sTiNE0yVhTKA6X3QrGPa9/DWyAZCJBJhME3Ew2SyaTpRiug91pwrDmc81jnJuva2KxnbHRRYc+DDwf7v8M8AmCsPoc8F7D868Dvw2cNkFz8wWCEPx7wB+H3bVfAr7R/kBrbd0Y82vA14HzwBvvsS57WrFY5L/+f3/G/Pw8Z8+ebVqi6m2eOH+e+iUXgELK8KFSlQ8N1PnQgMuBzAZmOhDZBup1ICIisrdYGwTd5aWrmrotNy1ttbysVXS+adyw51BpzKANZdfirfNtbCzmkEmnyWYyZLJZcrkcxXA5q07rR6+23nTzclbxuNZ53Ss2ulTVDWAQuAN43Fp7Z3h+3lpb2Joq7qy9uFTVWlzX5fLly7zxxhucOnWKF775DaZnbgBwIAsf6g/DdL9LIakWKREREZH9Kgq65TDAlsNg296VudHa67XOXl31oOLHgpmpowDsWjYQT4KloqKW2nDt5kxm7fWZo/1O15LJpGag3oc2damqJs8C/wkYAx4Iv9GdwNSGayi7Ujwe54477uCOO+7gh3/4h7HWcvHiRU6ePMnJkyf5+smTPH21jAE+0O/ysZEq9xyo06cgLSIiIrLreT5h9+Mg5DZ3Xy57pq07M421kCtRi64XC+8Lgq6/zreAjuOQSafIZjKko1CbzdKfWdlq2146dW2OjmMxzbQv22ejLc+DwP8J1IHftNYuGGPuBe621v72FtVxR+23luduXNflrbfe4vnnn+eprzzJpctXcAx8axSkh+tqkRYRERHZZNZC1YMlNwi2i+G27BqWwlJu2pajAOwHyzqWXUO5DtV1Lm0Uj8XIZNJksxmy2RzZXC7YNrXatnddbm/NbQ7AatGV3Wy9Lc8bCs/7kcLz6qy1nDt3jqeffpqnvvIkV66O4xj40ECdjx2o8V0jNbIa4iEiIiJCLWzp7RR0F9tCcOMeL8aS57BUNyzVu7fyOsaQzWbI5bJkszny+QLZXI5cWLLhGN72ABydbw7ByWRye/5hRHaBLQnPxpgU8CvAZ4FBa22fMeaTwLdYa//TLdd2F1N4Xh9rLe+8804QpJ98gvF3r5GKGb77QIUfOFjj/SW3Z5fCEhERkf3Lt1BpCr6dtlFLb+tx0OK75AbB113HhFXZTJp8Pk8+nyeXL1AoFMjlco1z+Xy+EYSj/eZzmUxGrbsit2CrwvPvAoeAfwM8Zq0tGWMOEUwe9qFbru0upvC8cdZaXnvtNR599FG+8uQTLJUrjOQsHx+t8LfGqgyk1dtBREREtl40odVicytvvUMLb8uxE7T4ug5LLlTqlm7vXKIW32w22wi+7cG2eT8qzeE4m83iOM62/LuISKutCs8TwF3W2kVjzIy1diA8P2utLd16dXcvhef3plwu88wzz3Ds2CO89NLLOAa+baDODxys8h3DdRL6GyEiIiKrcH06BtyOXZ7rhiXPUHbDrs6uYbHefYkix3HIZTPLrbuF4orQ2wjFq4RgtfiK9Latmm271v4YY8wwML3BryP7RCaT4VOf+hSf+tSnuHr1Ko899hiPPXqM3zkzTSEJf3Okwg8cqnIkrzWkRURE9pqat9zqG7X4LtadRghejEJvFIA9hyUv1ujqXPe6f49MOkUulyWfL5DPFxjO51tadNtbeNuP0+m0gq+IrMtGW55/C7gL+D+Ak8CHgN8G3rHW/qstqeEOU8vz5vM8jxdeeIFHHnmE5559FtfzuLPP4wfGKnxsVJOMiYiI7DZVDxbqhoW6w0I9CMLz9SAIL4TBeCE8XvRi4X3dw28qmSCfy5HLB5Nb5QvFljG+a43vjVqE43G9cRCR92arum0ngX8L/C9AFlgC/gD4JWtt7RbruqspPG+t2dlZHn/8cR55+CEuXLzUmGTs4+EkY44+CBYREdk0vg0mvpoPw+583bBQcxrHUTheqBvm3TiLrsN8be0QnEomKBTyFApFin19FIt9FArBZFfFYpFCoUA+bA1u3s/n8yQSie374UVEVrHp4dkY4wCfAJ6z1lbD7tpTdo+vdaXwvD2stbz++uscO3asMcnYQAY+dqDC943UuK3gabZuERGRJtZC2aMRfufrhvmO+w6LbjwMyqsvd+Q4DsV8jmJfkb6+fop9ffT19VEsFikWi/T1BaG4+VyxWCSVSm3vDy4issm2quV53lpbeE816zEKz9uvXC7z7LPP8uQTT/CNb34Dz/M5mLd874EK3ztaYzSr8dEiIrK3uD4s1oMxwAvhdrHuNLpHR2E4ahFeqDvM1VafDCsWcygVg5bgvlI/fWEQbi5RII72c7mcZnsWkX1pq8LzMeDXrbXPv5fK9RKF55118+ZNTpw4wZNPPM7Lp89greV9RZ/vGanw0cE6B3O+WqRFRGTL+BY8G4Rb1ze4Ntz6NPbrPtQ8Q61lH+q+oeYZyh5UwnWAK66h4hnKnkPFcyh7Dot1qLqrvx8zxlAs5IKgW+qnr6/UEoJLpRKlUuu5XC6nSbBERNZpK9d5/izwIHAZlpe9s9b+yi3Uc9dTeN49rl+/zlNPPcWTTz7BW2+9DcBQBj4yWOGjgy7fOlAnHdvhSoqIyJaKxuxWvGgbBNKqb6h6UPWCwFr1wmPfUG8Ks/WWrUPdGlzrtIXjsHgWbxMGp8ViDtl0mkw2SzabJZvLkc3myGazjZmf28cIt5dYTH/gRES2ylaF5z9e7Zq19p+s+wv1EIXn3enatWt8/etf5/nnv8YL33yBSrVKwoEP9Nf5yGCdbxuoM5bzNeGYiMguVPNoGZMbdVcOli1ywi7L0VJGsbCV1lCuQ3UDadYYQzqVJJVMkoxKKkUymSKVTpNMJkkkEiSTSeLxOIlEolGi47XOJ5NJYrEYqVSqUZLJ5Ir9ZDKpVmARkV1sS8LzfqTwvPvVajVOnz7N888/z/Nf+yqXLl8BIJcw3FWscVefy90llzuLLhmtZiEisukqHszVHOZqZuU2CslujAU3xnx17QCciMfJ53PB7M3FvnDt3mBJoqilNtqPSiaTIZ1ON0omk1FoFRGRdduy8GyM+VbgHwAj1tp/Zox5P5Cy1p6+tarubgrPvWd8fJyXXnqJV199lTOnX+bCxUsAGANH8j5399V4X9HjSN7jUM4jpZ5wIiINvqVpDd9g6aL5ugmDsMN8GIzn6zHmXIe5atCS3EkmnaLU10dpYIBSl0mrou7JCrwiIrLdtqrb9j8Efhe4H/hxa23RGHMP8G+stf/DLdd2F1N47n3z8/O8/vrrvPLKK7zyyhlee/VVlsoVIAjUo1nLkVydI3mPw3mPo3mP4Yy6fItI7/J8WHJNS4m6Ri81d4muOyy5hgXXYdGNMV83LNUsq70zSCYSlEp9lPr76e8faExUVSqVGBgIjvv7+xvn0un0tv7cIiIit2KrwvPrwGettS8ZY25Ya/uNMQlg3Fo7/B7qu2spPO89nucxPj7O2bNnOXfuXLA9+zbjE9eIXg+JGIxkLWPpOqM5j9GMH2yzPsWE1QzfIrJlrIWqF4TfcjgOuNwWhBslDL9LnsOSu76ZmyFYzzefywbdo4t9FArFllbg5jV8i8ViIwxnMhm1CouIyJ6z3vC80RGgB4CXw33btNXAaekZsViMI0eOcOTIET7xiU80zpfLZc6fP8+5c+e4dOkSly9f5vKli7x4eQLXW+6TmE0YDmQ8hlMuwxmf4YzPUMbjQNpnKOOrG7jIPmMt1H3C2Z2DWaCX94MZnyvNSxQ1LVkULGHkUPYdym4YhOsWv8tf1VgsCr95cn0FCvkCBwsFcrkc+XyeQtN+VAqFQmOrECwiIrJxGw3PJ4GfAP606dyPAd/YtBqJ7JBMJsMHP/hBPvjBD7acd12X69evB2E6LOPj40yMX+HlievU6vWW+/vShsGky2DKYyDtM5j2g20q2PanrLqEi2wza6EWBtwo0FajJY7azq04DpdAqnmGqu9Q9Z3WpZA8y0amD0mnkmQyaXLZHNlijmwux0A2CLpR4M3lci3htz0Ip1IphV8REZFtttFu2x8AHgfOAx8DjgPfAnzSWvv2VlRwp6nbtqzFWsvMzAwTExNMTEzw7rvvMjExwbVr17j+7gTXJycpV6otj3EMlNKG/qRLf9KjPxUE6lLKZyDl05/yKaUs2bi6h8ve5vlBoK35wbq8zevvrjhuu6fmheca9zaHXYea77S0BNfc1cfxdhKPxUinU6TTKTLpDOlMhnQm25jFuX1252iG52gbleZr0azQ8bim/RcREdlNtqTbtrX2jTBAfxp4BLgMPGKtXbi1aor0NmMMg4ODDA4O8uEPf3jFdWstCwsLXL9+vaVMT08zOTnJ5PVrvDk1xfzi0orHpmKG/rSllHAbwboUhuv+lG0cJ9VNXLaBbwm7G4fb5uIt70ettlHX5WC/KcxGwdezeP6t18dxHFLJRLB+b7imbrqQJp3JMtAWZtsDbjabXTPsKuCKiIhIJxt6d2CM+R1r7eeB/952/rettb+wqTUT2QOMMY3lV+68885V76tUKo1APTU11SjT09NMTU1y6fo1Xnx3hmqtvuKxhZQJWrCTQTfxgTBoR/v9aZ+scsC+Zy1UfVpmWV6sGxaaZ2GuN09G5bDkxRoTUJXr62u3TadSZDJBy2ymkCWbzTHYtA5vMpkknU6TCgNve0kmk41tc0kkEi33KdyKiIjIdttot+05a22xw/lpa+3gptZsl1C3bdktolbsqampRsienJxc3r9+jcnJSWZvzq14bCZhGEhZ+pN1+lPLobo/aYNtyqcvqbHYvcS3sBCtvVtzGtv5umGhbpgP1+add+PBOr01S32VtXgh+KAnn80EY2oLBXL5QmOCqU7jcLPZbOM4Kul0Gsdxtu8fQURERGQTbGq3bWPMT0X3N+1H3gdMbbB+IrJBza3Yd9xxx6r31Wq15W7hk5Ncv369af8ar127xo13Z/HbPjiLxmKXEi6lpEdfylJK+vSFwTrYt/QlNaP4VnF9uBmG4Js1w81wG4XjmzWHuXqcubrDXLXzJFXGGPK5LKW+PopDJQ73BUsMNS87FP1/1FxyuZyCr4iIiMga1tvv7SfCbbJpH4Ilqq4Bn9vMSonIrUsmk4yNjTE2NrbqPZ7ncePGjUbrdRS2o+3M9BTnZ2aYHZ+jU++UVMxQTFkKcY9i0qOQsPQlLYWkTyFhKYbbQsKST/pkYuyryc9W6yK96AYtxQv1IAzP1w3z9Rjzboy5mlm1a3Q6laK/v0T/6AC3DQzS39/fKKVSiYGBgcZ+oVAgFtOnGyIiIiKbbV3h2Vr7gwDGmH9trf3lra2SiGy1WCzG0NAQQ0NDfOADH1j1Ptd1uXnzJjMzM40yPT3N7OwsN2/e5MaNG9yYmebqjRvMTs5Rd93O38+BYtKQT/jk4y75hCWfsOTilnzCJxce5xPBLOOZmCUdt6RjloSzfcHbbSxltLwub9ULJsSqeoTr8i5PjrXkmuVzXjBGeKluWKivPRlWIh6nr69AX18/pf5+bu/vp6+vj1Kp1BKMo1CcyWS25x9ARERERFa10dm2fxnAGHMAyLddO7eJ9RKRXSAejzdmE+/GWsvS0hI3btxgbm6OmzdvNkJ2c5mdvcH1mzc5OzfH3PwCrrfGQFwgZiCdMGTCUJ0wPnHHEjOWmAmuB8fBFsC3Bt8G44I9Gx4THAdLHwWzP0fLHNV8qLoWf51TQBhjyGbS5LJZsrkcuXyewVyeo+F44E7doqNSKpXIZDJao1dERESkx2x0tu1PAX8EtPcHtYD6CYrsY8aYxsRR62WtpVKpMDc3x/z8PDdv3mRhYYGlpSWWlpYol8ssLi42jpeWlqhWq7iuG5Y6NdfFq9dxXZe6G8xGHovFcByHWDyO4zg4sRjxWAzHiZELZ3Nebcbn5vV42/czmYwmxhIRERHZpza61sfvAr8O/Im1trwF9RGRfcQY0wilIyMjO10dEREREZFVbTQ89wP/xW5kfSsRERERERGRHrfRfod/CPyTraiIiIiIiIiIyG610ZbnjwE/b4z5F8C7zRestR/ftFqJiIiIiIiI7CIbDc//b1hERERERERE9o11hWdjzN8Ody9vYV1EREREREREdqX1tjz/YZfrFnjfe6yLiIiIiIiIyK60rvBsrb1jqysiIiIiIiIislttdLZtERERERERkX1H4VlERERERESkC4VnERERERERkS4UnkVERERERES6UHgWERERERER6ULhWURERERERKQLhWcRERERERGRLhSeRURERERERLpQeBYRERERERHpQuFZREREREREpAuFZxEREREREZEuFJ5FREREREREulB4FhEREREREelC4VlERERERESkC4VnERERERERkS4UnkVERERERES6UHgWERERERER6ULhWURERERERKQLhWcRERERERGRLhSeRURERERERLpQeBYRERERERHpQuFZREREREREpAuFZxEREREREZEuFJ5FREREREREulB4FhEREREREelC4VlERERERESkC4VnERERERERkS4UnkVERERERES6iO90BUSk9/m+T7lcZmlpiUqlQq1Ww3VdarUa9Xqder3e2Hddt+Wx1toVXy8ejxOPx0kmk8TjcRKJRGM/mUySTqfJZrNks1nicf0aExEREZGtp3edIgJApVJhdnaWmzdvMj8/z9zcXGPbvD+/MM/i4iKLi4sslZeolCtUK9Udq3cikSCTzZDNZsnlcuRzeQqFAn19fauWUqlEPp/HGLNj9RYRERGR3qLwLLJHWWuZn59nZmaG6elpZmZmmJmZYXZ2lhs3bjA7OxucuzHDzdmbVKurB2ATN5iUwSYtfsyHBNi4hRIwTPCbpKlYx0KMYGCIQ+u+A3TLrH5b8Zb3jW/AJSh1qLpVqvUqs+4sZtHALDiug6kZbMVi/ZUt2wCJZIKBgQEO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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1c670cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train[\"num_features\"] = train[\"features\"].apply(len)\n",
    "train.loc[train[\"num_features\"]>16] = 16\n",
    "plt.figure(figsize=(16,6))\n",
    "sns.violinplot(x=\"num_features\",y=\"interest_level\",data=train,order = ['low','medium','high'])\n",
    "plt.xlabel('Number of Features',fontsize = 12)\n",
    "plt.ylabel('Interest_level',fontsize = 12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 特征处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 先处理兴趣程度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_map = {'low': 2, 'medium': 1, 'high': 0}\n",
    "train['interest_level'] = train['interest_level'].apply(lambda x: y_map[x])\n",
    "\n",
    "y_train = train['interest_level']\n",
    "train.drop(['listing_id', 'interest_level'], axis=1,inplace = True)\n",
    "\n",
    "test_id = test['listing_id']  #保留，生成提交文件时需要\n",
    "test.drop(['listing_id'], axis=1,inplace = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 处理价格、浴室数量、卧室数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "metadata": {},
   "outputs": [],
   "source": [
    "def remove_noise(df):\n",
    "#remove some noise\n",
    "    df= df[df.price < 10000]\n",
    "\n",
    "    df.loc[df[\"bathrooms\"] == 112, \"bathrooms\"] = 1.5\n",
    "    df.loc[df[\"bathrooms\"] == 10, \"bathrooms\"] = 1\n",
    "    df.loc[df[\"bathrooms\"] == 20, \"bathrooms\"] = 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {},
   "outputs": [],
   "source": [
    "#构造新特征\n",
    "#price_bathrooms：单位bathroom的价格\n",
    "#price_bedrooms：单位bedroom的价格\n",
    "def create_price_room(df):\n",
    "    df['price_bathrooms'] =  (df[\"price\"])/ (df[\"bathrooms\"] +1.0)\n",
    "    df['price_bedrooms'] =  (df[\"price\"])/ (df[\"bedrooms\"] +1.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "metadata": {},
   "outputs": [],
   "source": [
    "#构造新特征\n",
    "#room_diff：bathroom房间数 - bedroom房间数\n",
    "#room_num：bathroom房间数 + bedroom房间数\n",
    "def create_room_diff_sum(df):\n",
    "    df[\"room_diff\"] = df[\"bathrooms\"] - df[\"bedrooms\"]\n",
    "    df[\"room_num\"] = df[\"bedrooms\"] + df[\"bathrooms\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 发布日期created"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "metadata": {},
   "outputs": [],
   "source": [
    "def procdess_created_date(df):\n",
    "    df['Date'] = pd.to_datetime(df['created'])\n",
    "    df['Year'] = df['Date'].dt.year\n",
    "    df['Month'] = df['Date'].dt.month\n",
    "    df['Day'] = df['Date'].dt.day\n",
    "    df['Wday'] = df['Date'].dt.dayofweek\n",
    "    df['Yday'] = df['Date'].dt.dayofyear\n",
    "    df['hour'] = df['Date'].dt.hour\n",
    "\n",
    "    df.drop(['Date', 'created'], axis=1,inplace = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "metadata": {},
   "outputs": [],
   "source": [
    "def procdess_description(df):\n",
    "    df.drop(['description'], axis=1,inplace = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# manager_id\n",
    "将manager分为几个等级 top 1%， 2%， 5， 10， 15， 20， 25， 30， 50，"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 221,
   "metadata": {},
   "outputs": [],
   "source": [
    "def procdess_manager_id(df):\n",
    "    managers_count = df['manager_id'].value_counts()\n",
    "\n",
    "    df['top_10_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 90)] else 0)\n",
    "    df['top_25_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 75)] else 0)\n",
    "    df['top_5_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 95)] else 0)\n",
    "    df['top_50_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 50)] else 0)\n",
    "    df['top_1_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 99)] else 0)\n",
    "    df['top_2_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 98)] else 0)\n",
    "    df['top_15_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 85)] else 0)\n",
    "    df['top_20_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 80)] else 0)\n",
    "    df['top_30_manager'] = df['manager_id'].apply(lambda x: 1 if x in managers_count.index.values[\n",
    "        managers_count.values >= np.percentile(managers_count.values, 70)] else 0)\n",
    "    \n",
    "    df.drop(['manager_id'], axis=1,inplace = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# building_id\n",
    "类似manager_id处理 直接删除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "metadata": {},
   "outputs": [],
   "source": [
    "def procdess_building_id(df):\n",
    "    df.drop(['building_id'], axis=1,inplace = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 223,
   "metadata": {},
   "outputs": [],
   "source": [
    "def procdess_photos(df):\n",
    "        df.drop(['photos'], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# latitude, longtitude\n",
    "聚类降维编码(#用训练数据训练，对训练数据和测试数据都做变换) 到中心的距离（论坛上讨论到曼哈顿中心的距离更好）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 224,
   "metadata": {},
   "outputs": [],
   "source": [
    "def procdess_location_train(df):   \n",
    "    train_location = df.loc[:,[ 'latitude', 'longitude']]\n",
    "    \n",
    "     # Clustering\n",
    "    kmeans_cluster = KMeans(n_clusters=20)\n",
    "    res = kmeans_cluster.fit(train_location)\n",
    "    res = kmeans_cluster.predict(train_location)\n",
    "\n",
    "    df['cenroid'] = res\n",
    "\n",
    "    # L1 distance\n",
    "    center = [ train_location['latitude'].mean(), train_location['longitude'].mean()]\n",
    "    df['distance'] = abs(df['latitude'] - center[0]) + abs(df['longitude'] - center[1])\n",
    "    \n",
    "    #原始特征也可以考虑保留，此处简单丢弃\n",
    "    df.drop(['latitude', 'longitude'], axis=1, inplace=True)\n",
    "    \n",
    "    return kmeans_cluster,center"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 225,
   "metadata": {},
   "outputs": [],
   "source": [
    "def procdess_location_test(df, kmeans_cluster, center):   \n",
    "    test_location = df.loc[:,[ 'latitude', 'longitude']]\n",
    "    \n",
    "     # Clustering\n",
    "    res = kmeans_cluster.predict(test_location)\n",
    "\n",
    "    df['cenroid'] = res\n",
    "\n",
    "    # L1 distance\n",
    "    df['distance'] = abs(df['latitude'] - center[0]) + abs(df['longitude'] - center[1])\n",
    "    df.drop(['latitude', 'longitude'], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# display_address\n",
    "定义高基数类别型特征编码函数 对这些特征进行均值编码（该特征值在每个类别的概率，即原来的一维特征变成了C-1维特征，C为标签类别数目）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "metadata": {},
   "outputs": [],
   "source": [
    "def procdess_display_address_train_test(df_train, y_train, df_test):\n",
    "    n_train_samples = len(df_train.index)    \n",
    "    df_train_test = pd.concat((df_train, df_test), axis=0)\n",
    "\n",
    "    lb = LabelEncoder()\n",
    "    lb.fit(list(df_train_test['display_address'].values))\n",
    "    df_train_test ['display_address'] = lb.transform(list(df_train_test['display_address'].values))\n",
    "    \n",
    "    #import pdb\n",
    "    #pdb.set_trace()\n",
    "    me = MeanEncoder(['display_address'], target_type='classification')\n",
    "    \n",
    "    #下列函数并没有对test部分进行编码，因为fit还是根据y_train来训练的\n",
    "    #放弃该函数，直接丢弃算了，文本特征编码需要额外的功力\n",
    "    df_train_test = me.fit_transform(df_train_test, y_train)\n",
    "\n",
    "    df_train_test.drop(['display_address'], axis=1,inplace = True)\n",
    "    \n",
    "    df_train = df_train_test.iloc[:n_train_samples, :]\n",
    "    df_test = df_train_test.iloc[n_train_samples:, :]\n",
    "    \n",
    "    return df_train, df_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 227,
   "metadata": {},
   "outputs": [],
   "source": [
    "def procdess_display_address(df):\n",
    "    df.drop(['display_address'], axis=1,inplace = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# street_address¶"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 和display_address信息冗余，去掉\n",
    "def procdess_street_address(df):\n",
    "    df = df.drop(['street_address'], axis=1,inplace = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# features\n",
    "描述特征文字长度 特征中单词的词频，相当于以数据集features中出现的词语为字典的one-hot编码（虽然是词频，但在这个任务中每个单词通常只出现一次）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "metadata": {},
   "outputs": [],
   "source": [
    "def procdess_features_train_test(df_train, df_test):\n",
    "    n_train_samples = len(df_train.index)\n",
    "    \n",
    "    df_train_test = pd.concat((df_train, df_test), axis=0)\n",
    "    df_train_test['features2'] = df_train_test['features']\n",
    "    df_train_test['features2'] = df_train_test['features2'].apply(lambda x: ' '.join(x))\n",
    "\n",
    "    c_vect = CountVectorizer(stop_words='english', max_features=200, ngram_range=(1, 1), decode_error='ignore')\n",
    "    c_vect_sparse = c_vect.fit_transform(df_train_test['features2'])\n",
    "    c_vect_sparse_cols = c_vect.get_feature_names()\n",
    "\n",
    "    df_train.drop(['features'], axis=1, inplace=True)\n",
    "    df_test.drop(['features'], axis=1, inplace=True)\n",
    "    \n",
    "    #hstack作为特征处理的最后一部，先将其他所有特征都转换成数值型特征才能处理,稀疏表示\n",
    "    df_train_sparse = sparse.hstack([df_train, c_vect_sparse[:n_train_samples,:]]).tocsr()\n",
    "    df_test_sparse = sparse.hstack([df_test, c_vect_sparse[n_train_samples:,:]]).tocsr()\n",
    "    \n",
    "    #常规datafrmae\n",
    "    tmp = pd.DataFrame(c_vect_sparse.toarray()[:n_train_samples,:],columns = c_vect_sparse_cols, index=df_train.index)\n",
    "    df_train = pd.concat([df_train, tmp], axis=1)\n",
    "    \n",
    "    tmp = pd.DataFrame(c_vect_sparse.toarray()[n_train_samples:,:],columns = c_vect_sparse_cols, index=df_test.index)\n",
    "    df_test = pd.concat([df_test, tmp], axis=1)\n",
    "    \n",
    "    #df_test = pd.concat([df_test, tmp[n_train_samples:,:]], axis=1)\n",
    "  \n",
    "    return df_train_sparse,df_test_sparse,df_train, df_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 230,
   "metadata": {},
   "outputs": [],
   "source": [
    "def procdess_features_test(df, c_vect):\n",
    "    df['features2'] = df['features']\n",
    "    df['features2'] = df['features2'].apply(lambda x: ' '.join(x))\n",
    "\n",
    "    c_vect_sparse = c_vect.transform(df['features2'])\n",
    "    c_vect_sparse_cols = c_vect.get_feature_names()\n",
    "\n",
    "    df.drop(['features', 'features2'], axis=1, inplace=True)\n",
    "    \n",
    "    #hstack作为特征处理的最后一部，先将其他所有特征都转换成数值型特征才能处理\n",
    "    df_sparse = sparse.hstack([df, c_vect_sparse]).tocsr()\n",
    "    \n",
    "    tmp = pd.DataFrame(c_vect_sparse.toarray(),columns = c_vect_sparse_cols, index=df.index)\n",
    "    df = pd.concat([df, tmp], axis=1)\n",
    "    \n",
    "    return df_sparse, df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 对训练样本做特征工程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\pandas\\core\\indexing.py:537: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  self.obj[item] = s\n"
     ]
    }
   ],
   "source": [
    "remove_noise(train)\n",
    "\n",
    "create_price_room(train)\n",
    "create_room_diff_sum(train)\n",
    "\n",
    "procdess_created_date(train)\n",
    "\n",
    "procdess_description(train)\n",
    "\n",
    "procdess_manager_id(train)\n",
    "\n",
    "procdess_building_id(train)\n",
    "procdess_photos(train)\n",
    "\n",
    "#kmeans_cluster,center = procdess_location_train(train)\n",
    "procdess_street_address(train)\n",
    "procdess_display_address(train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 对测试样本做特征工程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\pandas\\core\\indexing.py:537: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  self.obj[item] = s\n"
     ]
    }
   ],
   "source": [
    "remove_noise(test)\n",
    "\n",
    "create_price_room(test)\n",
    "create_room_diff_sum(test)\n",
    "\n",
    "procdess_created_date(test)\n",
    "\n",
    "procdess_description(test)\n",
    "\n",
    "procdess_manager_id(test)\n",
    "\n",
    "procdess_building_id(test)\n",
    "procdess_photos(test)\n",
    "\n",
    "#还是直接用经纬度\n",
    "#procdess_location_test(test, kmeans_cluster, center)\n",
    "\n",
    "procdess_street_address(test)\n",
    "procdess_display_address(test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_sparse,X_test_sparse,train,test = procdess_features_train_test(train,test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 特征处理结果存为文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {},
   "outputs": [],
   "source": [
    "#存为csv格式方便用excel查看(属性名字有重复，features得到的词语中也有bathrooms和bedrooms)\n",
    "train = pd.concat([train, y_train], axis=1)\n",
    "test= pd.concat([test_id,test],axis = 1)\n",
    "train.to_csv(dpath+'RentListingInquries_FE_train.csv', index=False)\n",
    "test.to_csv(dpath+'RentListingInquries_FE_test.csv', index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看训练集CSV特征信息.只取前10000条数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 293,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>latitude</th>\n",
       "      <th>longitude</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>40.7145</td>\n",
       "      <td>-73.9425</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>40.7947</td>\n",
       "      <td>-73.9667</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>40.7388</td>\n",
       "      <td>-74.0018</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>40.7539</td>\n",
       "      <td>-73.9677</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>40.8241</td>\n",
       "      <td>-73.9493</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 225 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  latitude  longitude  price  price_bathrooms  \\\n",
       "0        1.5         3   40.7145   -73.9425   3000           1200.0   \n",
       "1        1.0         2   40.7947   -73.9667   5465           2732.5   \n",
       "2        1.0         1   40.7388   -74.0018   2850           1425.0   \n",
       "3        1.0         1   40.7539   -73.9677   3275           1637.5   \n",
       "4        1.0         4   40.8241   -73.9493   3350           1675.0   \n",
       "\n",
       "   price_bedrooms  room_diff  room_num  Year       ...        walk  walls  \\\n",
       "0      750.000000       -1.5       4.5  2016       ...           0      0   \n",
       "1     1821.666667       -1.0       3.0  2016       ...           0      0   \n",
       "2     1425.000000        0.0       2.0  2016       ...           0      0   \n",
       "3     1637.500000        0.0       2.0  2016       ...           0      0   \n",
       "4      670.000000       -3.0       5.0  2016       ...           0      0   \n",
       "\n",
       "   war  washer  water  wheelchair  wifi  windows  work  interest_level  \n",
       "0    0       0      0           0     0        0     0               1  \n",
       "1    0       0      0           0     0        0     0               2  \n",
       "2    0       0      0           0     0        0     0               0  \n",
       "3    0       0      0           0     0        0     0               2  \n",
       "4    1       0      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 225 columns]"
      ]
     },
     "execution_count": 293,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train = pd.read_csv(dpath+'RentListingInquries_FE_train.csv')\n",
    "test = pd.read_csv(dpath+'RentListingInquries_FE_test.csv')\n",
    "test = test[:10000]\n",
    "train = train[:10000]\n",
    "train.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>latitude</th>\n",
       "      <th>longitude</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>49352.00000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.0</td>\n",
       "      <td>...</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.21218</td>\n",
       "      <td>1.541640</td>\n",
       "      <td>40.741545</td>\n",
       "      <td>-73.955716</td>\n",
       "      <td>3.830174e+03</td>\n",
       "      <td>1.697863e+03</td>\n",
       "      <td>1.657567e+03</td>\n",
       "      <td>-0.329460</td>\n",
       "      <td>2.753820</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.003080</td>\n",
       "      <td>0.000385</td>\n",
       "      <td>0.186477</td>\n",
       "      <td>0.009361</td>\n",
       "      <td>0.000446</td>\n",
       "      <td>0.028165</td>\n",
       "      <td>0.002026</td>\n",
       "      <td>0.001013</td>\n",
       "      <td>0.000952</td>\n",
       "      <td>1.616895</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.50142</td>\n",
       "      <td>1.115018</td>\n",
       "      <td>0.638535</td>\n",
       "      <td>1.177912</td>\n",
       "      <td>2.206687e+04</td>\n",
       "      <td>1.100477e+04</td>\n",
       "      <td>7.817996e+03</td>\n",
       "      <td>0.947732</td>\n",
       "      <td>1.446091</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.055412</td>\n",
       "      <td>0.019618</td>\n",
       "      <td>0.389495</td>\n",
       "      <td>0.101625</td>\n",
       "      <td>0.021109</td>\n",
       "      <td>0.165446</td>\n",
       "      <td>0.044969</td>\n",
       "      <td>0.031814</td>\n",
       "      <td>0.030846</td>\n",
       "      <td>0.626035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-118.271000</td>\n",
       "      <td>4.300000e+01</td>\n",
       "      <td>2.150000e+01</td>\n",
       "      <td>4.300000e+01</td>\n",
       "      <td>-5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>40.728300</td>\n",
       "      <td>-73.991700</td>\n",
       "      <td>2.500000e+03</td>\n",
       "      <td>1.225000e+03</td>\n",
       "      <td>1.066667e+03</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>40.751800</td>\n",
       "      <td>-73.977900</td>\n",
       "      <td>3.150000e+03</td>\n",
       "      <td>1.500000e+03</td>\n",
       "      <td>1.383417e+03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>40.774300</td>\n",
       "      <td>-73.954800</td>\n",
       "      <td>4.100000e+03</td>\n",
       "      <td>1.850000e+03</td>\n",
       "      <td>1.962500e+03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>10.00000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>44.883500</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.490000e+06</td>\n",
       "      <td>2.245000e+06</td>\n",
       "      <td>1.496667e+06</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>13.500000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 225 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         bathrooms      bedrooms      latitude     longitude         price  \\\n",
       "count  49352.00000  49352.000000  49352.000000  49352.000000  4.935200e+04   \n",
       "mean       1.21218      1.541640     40.741545    -73.955716  3.830174e+03   \n",
       "std        0.50142      1.115018      0.638535      1.177912  2.206687e+04   \n",
       "min        0.00000      0.000000      0.000000   -118.271000  4.300000e+01   \n",
       "25%        1.00000      1.000000     40.728300    -73.991700  2.500000e+03   \n",
       "50%        1.00000      1.000000     40.751800    -73.977900  3.150000e+03   \n",
       "75%        1.00000      2.000000     40.774300    -73.954800  4.100000e+03   \n",
       "max       10.00000      8.000000     44.883500      0.000000  4.490000e+06   \n",
       "\n",
       "       price_bathrooms  price_bedrooms     room_diff      room_num     Year  \\\n",
       "count     4.935200e+04    4.935200e+04  49352.000000  49352.000000  49352.0   \n",
       "mean      1.697863e+03    1.657567e+03     -0.329460      2.753820   2016.0   \n",
       "std       1.100477e+04    7.817996e+03      0.947732      1.446091      0.0   \n",
       "min       2.150000e+01    4.300000e+01     -5.000000      0.000000   2016.0   \n",
       "25%       1.225000e+03    1.066667e+03     -1.000000      2.000000   2016.0   \n",
       "50%       1.500000e+03    1.383417e+03      0.000000      2.000000   2016.0   \n",
       "75%       1.850000e+03    1.962500e+03      0.000000      4.000000   2016.0   \n",
       "max       2.245000e+06    1.496667e+06      8.000000     13.500000   2016.0   \n",
       "\n",
       "            ...                walk         walls           war        washer  \\\n",
       "count       ...        49352.000000  49352.000000  49352.000000  49352.000000   \n",
       "mean        ...            0.003080      0.000385      0.186477      0.009361   \n",
       "std         ...            0.055412      0.019618      0.389495      0.101625   \n",
       "min         ...            0.000000      0.000000      0.000000      0.000000   \n",
       "25%         ...            0.000000      0.000000      0.000000      0.000000   \n",
       "50%         ...            0.000000      0.000000      0.000000      0.000000   \n",
       "75%         ...            0.000000      0.000000      0.000000      0.000000   \n",
       "max         ...            1.000000      1.000000      1.000000      2.000000   \n",
       "\n",
       "              water    wheelchair          wifi       windows          work  \\\n",
       "count  49352.000000  49352.000000  49352.000000  49352.000000  49352.000000   \n",
       "mean       0.000446      0.028165      0.002026      0.001013      0.000952   \n",
       "std        0.021109      0.165446      0.044969      0.031814      0.030846   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "50%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "75%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "max        1.000000      1.000000      1.000000      1.000000      1.000000   \n",
       "\n",
       "       interest_level  \n",
       "count    49352.000000  \n",
       "mean         1.616895  \n",
       "std          0.626035  \n",
       "min          0.000000  \n",
       "25%          1.000000  \n",
       "50%          2.000000  \n",
       "75%          2.000000  \n",
       "max          2.000000  \n",
       "\n",
       "[8 rows x 225 columns]"
      ]
     },
     "execution_count": 236,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 各属性统计\n",
    "train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 49352 entries, 0 to 49351\n",
      "Columns: 225 entries, bathrooms to interest_level\n",
      "dtypes: float64(7), int64(218)\n",
      "memory usage: 84.7 MB\n"
     ]
    }
   ],
   "source": [
    "#各属性基本信息\n",
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "数据预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 291,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入必要的包\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.metrics import log_loss\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "train = train[:10000]\n",
    "y_train = train['interest_level']\n",
    "X_train = train.drop(['interest_level'],axis = 1)\n",
    "# y_train = train.label.values[:10000]\n",
    "# X_train = np.array(train)\n",
    "# ss_X = StandardScaler()\n",
    "# X_train = ss_X.fit_transform(train)\n",
    "X_test = test\n",
    "\n",
    "lr = LogisticRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "logloss of each fold is: [ 0.67808291  0.67575158  0.68208204  0.69006157  0.69343307]\n",
      "cv logloss is : 0.683882231658\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n"
     ]
    }
   ],
   "source": [
    "#交叉验证用于评估模型性能和进行参数调优\n",
    "# 分类任务中交叉验证缺省是采用StratifiedKFold\n",
    "from sklearn.cross_validation import cross_val_score\n",
    "loss = cross_val_score(lr,X_train,y_train,cv=5,scoring='neg_log_loss')\n",
    "print('logloss of each fold is:',-loss)\n",
    "print ('cv logloss is :',-loss.mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "可以看到使用默认的logloss值比较大，因此下面进行参数调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 正则化的LogisticRegression及调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise',\n",
       "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False),\n",
       "       fit_params=None, iid=True, n_jobs=1,\n",
       "       param_grid={'penalty': ['l1', 'l2'], 'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
       "       scoring='neg_log_loss', verbose=0)"
      ]
     },
     "execution_count": 244,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "penaltys = ['l1','l2']\n",
    "Cs = [0.001,0.01,0.1,1,10,100,1000]\n",
    "tuned_parameters = dict(penalty = penaltys,C = Cs)\n",
    "lr_penalty = LogisticRegression()\n",
    "grid = GridSearchCV(lr_penalty,tuned_parameters,cv=5,scoring='neg_log_loss')\n",
    "grid.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([  0.79880009,   0.43419991,   0.84060011,   0.54200001,\n",
       "          2.09239993,   0.65820007,   3.83020005,   0.73760004,\n",
       "         31.87060013,   0.57879996,  31.69219995,   0.52660003,\n",
       "         31.75320001,   0.57819996]),\n",
       " 'mean_score_time': array([ 0.00459991,  0.00440006,  0.00500002,  0.00420003,  0.00500002,\n",
       "         0.00519996,  0.00459995,  0.00479999,  0.00499988,  0.00479994,\n",
       "         0.0046    ,  0.00440006,  0.00459995,  0.00680008]),\n",
       " 'mean_test_score': array([-0.72772579, -0.69881534, -0.70188088, -0.68941833, -0.6848597 ,\n",
       "        -0.6845093 , -0.68113745, -0.68387893, -0.70466371, -0.68605879,\n",
       "        -0.74919344, -0.68567539, -0.77980741, -0.68432775]),\n",
       " 'mean_train_score': array([-0.72662727, -0.69601536, -0.69973385, -0.68308513, -0.67758601,\n",
       "        -0.67478325, -0.65923374, -0.67238672, -0.64650959, -0.67468883,\n",
       "        -0.64381964, -0.67688691, -0.64361248, -0.67502386]),\n",
       " 'param_C': masked_array(data = [0.001 0.001 0.01 0.01 0.1 0.1 1 1 10 10 100 100 1000 1000],\n",
       "              mask = [False False False False False False False False False False False False\n",
       "  False False],\n",
       "        fill_value = ?),\n",
       " 'param_penalty': masked_array(data = ['l1' 'l2' 'l1' 'l2' 'l1' 'l2' 'l1' 'l2' 'l1' 'l2' 'l1' 'l2' 'l1' 'l2'],\n",
       "              mask = [False False False False False False False False False False False False\n",
       "  False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'C': 0.001, 'penalty': 'l1'},\n",
       "  {'C': 0.001, 'penalty': 'l2'},\n",
       "  {'C': 0.01, 'penalty': 'l1'},\n",
       "  {'C': 0.01, 'penalty': 'l2'},\n",
       "  {'C': 0.1, 'penalty': 'l1'},\n",
       "  {'C': 0.1, 'penalty': 'l2'},\n",
       "  {'C': 1, 'penalty': 'l1'},\n",
       "  {'C': 1, 'penalty': 'l2'},\n",
       "  {'C': 10, 'penalty': 'l1'},\n",
       "  {'C': 10, 'penalty': 'l2'},\n",
       "  {'C': 100, 'penalty': 'l1'},\n",
       "  {'C': 100, 'penalty': 'l2'},\n",
       "  {'C': 1000, 'penalty': 'l1'},\n",
       "  {'C': 1000, 'penalty': 'l2'}],\n",
       " 'rank_test_score': array([12,  9, 10,  8,  5,  4,  1,  2, 11,  7, 13,  6, 14,  3]),\n",
       " 'split0_test_score': array([-0.72397913, -0.69312848, -0.69811704, -0.68194756, -0.67806563,\n",
       "        -0.67770739, -0.68243216, -0.67808291, -0.71553608, -0.67662382,\n",
       "        -0.77182999, -0.67721586, -0.8017736 , -0.67791592]),\n",
       " 'split0_train_score': array([-0.72745896, -0.69769881, -0.70169261, -0.68474482, -0.67956972,\n",
       "        -0.67711508, -0.65912846, -0.66727816, -0.64608478, -0.66756102,\n",
       "        -0.6432791 , -0.67845192, -0.64315398, -0.67696675]),\n",
       " 'split1_test_score': array([-0.72328065, -0.69219612, -0.6968511 , -0.68483091, -0.68124745,\n",
       "        -0.68232122, -0.67506852, -0.67575158, -0.70298267, -0.68132165,\n",
       "        -0.75592045, -0.68246599, -0.7997886 , -0.67929163]),\n",
       " 'split1_train_score': array([-0.7278595 , -0.69738689, -0.70145111, -0.68447852, -0.67922238,\n",
       "        -0.67802601, -0.66151111, -0.67169441, -0.64883548, -0.67891966,\n",
       "        -0.64606908, -0.67866108, -0.64578108, -0.67408811]),\n",
       " 'split2_test_score': array([-0.728518  , -0.6994201 , -0.70138041, -0.68627534, -0.68195875,\n",
       "        -0.68241278, -0.67887052, -0.68208204, -0.69829261, -0.68460413,\n",
       "        -0.74374172, -0.67947528, -0.75774816, -0.68399333]),\n",
       " 'split2_train_score': array([-0.72589527, -0.69579964, -0.70044128, -0.68254989, -0.67863233,\n",
       "        -0.67595146, -0.65970555, -0.6736769 , -0.64718908, -0.67577271,\n",
       "        -0.6446398 , -0.66932911, -0.64410852, -0.67942636]),\n",
       " 'split3_test_score': array([-0.73162   , -0.70572886, -0.70834622, -0.69329096, -0.69355538,\n",
       "        -0.68945749, -0.68891625, -0.69006157, -0.7118444 , -0.690578  ,\n",
       "        -0.74418195, -0.69404706, -0.76920173, -0.68921955]),\n",
       " 'split3_train_score': array([-0.7256385 , -0.69493313, -0.69740623, -0.67923943, -0.67534416,\n",
       "        -0.67229095, -0.65767238, -0.67516445, -0.64474287, -0.67223081,\n",
       "        -0.64193964, -0.67972227, -0.64210457, -0.6722426 ]),\n",
       " 'split4_test_score': array([-0.73123878, -0.7036141 , -0.70471685, -0.70076426, -0.68948113,\n",
       "        -0.69065825, -0.68040143, -0.69343307, -0.6946482 , -0.69718457,\n",
       "        -0.73025949, -0.69518809, -0.77049468, -0.69123093]),\n",
       " 'split4_train_score': array([-0.72628409, -0.69425832, -0.69767803, -0.68441299, -0.67516145,\n",
       "        -0.67053273, -0.65815119, -0.67411966, -0.64569576, -0.67895995,\n",
       "        -0.64317056, -0.67827016, -0.64291423, -0.67239551]),\n",
       " 'std_fit_time': array([  0.30767991,   0.0707767 ,   0.14244511,   0.07484657,\n",
       "          0.1923337 ,   0.09149291,   0.36204442,   0.14917591,\n",
       "         13.80504211,   0.10719967,  14.032635  ,   0.05463548,\n",
       "         14.1000251 ,   0.03308415]),\n",
       " 'std_score_time': array([ 0.0008    ,  0.00048994,  0.0010955 ,  0.00074844,  0.00109554,\n",
       "         0.00116613,  0.00049   ,  0.00074837,  0.00063249,  0.00074829,\n",
       "         0.00079999,  0.00079987,  0.00079997,  0.00365517]),\n",
       " 'std_test_score': array([ 0.00351951,  0.00542881,  0.00423251,  0.00678782,  0.00573766,\n",
       "         0.00485244,  0.0045764 ,  0.00681677,  0.00791781,  0.00717932,\n",
       "         0.01393497,  0.00749442,  0.01770838,  0.00525652]),\n",
       " 'std_train_score': array([ 0.00087651,  0.00134313,  0.00184013,  0.00207534,  0.00192935,\n",
       "         0.00288431,  0.00134387,  0.00279142,  0.00140254,  0.00433969,\n",
       "         0.00141284,  0.00381235,  0.00125861,  0.00278123])}"
      ]
     },
     "execution_count": 245,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看结果\n",
    "grid.cv_results_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看最小损失以及最佳参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 247,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.681137446985\n",
      "{'C': 1, 'penalty': 'l1'}\n"
     ]
    }
   ],
   "source": [
    "print(-grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CV误差曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 252,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x252151d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_means = grid.cv_results_['mean_test_score']\n",
    "test_stds = grid.cv_results_['std_test_score']\n",
    "train_means = grid.cv_results_['mean_train_score']\n",
    "train_stds = grid.cv_results_['std_train_score']\n",
    "\n",
    "n_Cs = len(Cs)\n",
    "number_penaltys = len(penaltys)\n",
    "test_scores = np.array(test_means).reshape(n_Cs,number_penaltys)\n",
    "train_scores = np.array(train_means).reshape(n_Cs,number_penaltys)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_penaltys)\n",
    "train_stds = np.array(train_stds).reshape(n_Cs,number_penaltys)\n",
    "\n",
    "x_axis = np.log10(Cs)\n",
    "for i,value in enumerate(penaltys):\n",
    "    plt.errorbar(x_axis,test_scores[:,i],yerr=test_stds[:,i],label=value+\"test\")\n",
    "    plt.errorbar(x_axis,train_scores[:,i],yerr=train_stds[:,i],label=value+\"train\")\n",
    "    \n",
    "plt.legend()\n",
    "plt.xlabel('log(C)')\n",
    "plt.ylabel('neg-logloss')\n",
    "plt.savefig('LogsiticGridSearchCV_C.png')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "可以看到黄色的l1train负损失最大，表示越好"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用LogisticRegressionCV实现正则化的LogisticRegression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# L1正则"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 253,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "LogisticRegressionCV(Cs=[1, 10, 100, 1000], class_weight=None, cv=5,\n",
       "           dual=False, fit_intercept=True, intercept_scaling=1.0,\n",
       "           max_iter=100, multi_class='ovr', n_jobs=1, penalty='l1',\n",
       "           random_state=None, refit=True, scoring='neg_log_loss',\n",
       "           solver='liblinear', tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 253,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegressionCV\n",
    "Cs = [1,10,100,1000]\n",
    "lrcv_L1 = LogisticRegressionCV(Cs=Cs,cv=5,scoring='neg_log_loss',penalty='l1',solver='liblinear',multi_class='ovr')\n",
    "lrcv_L1.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 256,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{0: array([[-0.22919239, -0.24520764, -0.27388971, -0.28464472],\n",
       "        [-0.21155174, -0.23376066, -0.28007393, -0.31075687],\n",
       "        [-0.22524419, -0.23995185, -0.26866033, -0.28279472],\n",
       "        [-0.22927362, -0.23321395, -0.24735305, -0.25622187],\n",
       "        [-0.2347842 , -0.23993614, -0.26355836, -0.28264569]]),\n",
       " 1: array([[-0.48900518, -0.51151646, -0.56396384, -0.60686582],\n",
       "        [-0.499961  , -0.52264776, -0.56063127, -0.59709324],\n",
       "        [-0.49258615, -0.50772311, -0.55503223, -0.5795391 ],\n",
       "        [-0.49499104, -0.52372987, -0.56955855, -0.60616692],\n",
       "        [-0.48204689, -0.49828284, -0.52929112, -0.55312819]]),\n",
       " 2: array([[-0.52553462, -0.55010426, -0.57117803, -0.58456287],\n",
       "        [-0.5216007 , -0.53078998, -0.5455511 , -0.55161125],\n",
       "        [-0.52014876, -0.53102417, -0.54769004, -0.55334726],\n",
       "        [-0.5271024 , -0.54080371, -0.55136558, -0.55813818],\n",
       "        [-0.51315946, -0.52205982, -0.54615657, -0.58225685]])}"
      ]
     },
     "execution_count": 256,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\n",
    "lrcv_L1.scores_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 254,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 10000 entries, 0 to 9999\n",
      "Columns: 225 entries, bathrooms to interest_level\n",
      "dtypes: float64(7), int64(218)\n",
      "memory usage: 17.2 MB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CV误差图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 263,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb5220f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_Cs = len(Cs)\n",
    "n_classes = 3\n",
    "scores =  np.zeros((n_classes,n_Cs))\n",
    "\n",
    "for j in range(n_classes):\n",
    "        scores[j][:] = np.mean(lrcv_L1.scores_[j],axis = 0)\n",
    "    \n",
    "mse_mean = -np.mean(scores, axis = 0)\n",
    "plt.plot(np.log10(Cs), mse_mean.reshape(n_Cs,1)) \n",
    "#plt.plot(np.log10(reg.Cs)*np.ones(3), [0.28, 0.29, 0.30])\n",
    "plt.xlabel('log(C)')\n",
    "plt.ylabel('neg-logloss')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 264,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ -1.06661804e+00,   0.00000000e+00,   4.47294079e-03,\n",
       "         -1.23320681e-02,   8.22234837e-04,  -4.28843221e-03,\n",
       "         -3.85577031e-04,  -8.86173402e-01,  -3.76382297e-01,\n",
       "          5.34249572e-04,   0.00000000e+00,  -1.69097012e-02,\n",
       "          7.51109614e-03,   4.17155897e-03,   8.56245141e-02,\n",
       "         -2.20597032e-01,   1.99991477e-01,   4.27690078e-01,\n",
       "          0.00000000e+00,  -2.40457807e-01,  -3.92584312e-01,\n",
       "          0.00000000e+00,  -9.78975253e-02,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          4.55383223e-02,  -8.24817448e-01,   2.29255010e-01,\n",
       "          0.00000000e+00,  -3.63889712e-01,   0.00000000e+00,\n",
       "         -5.58664718e-01,   0.00000000e+00,   4.17445000e-01,\n",
       "          0.00000000e+00,   3.65972278e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,  -6.27041402e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   8.54200502e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,  -1.81178354e-01,\n",
       "          2.31665815e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   2.07549914e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,   3.44030213e-01,   2.56212865e-01,\n",
       "         -4.88101711e-01,  -2.92697270e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   1.35078862e-02,   0.00000000e+00,\n",
       "          2.56067677e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          4.95561392e-01,  -5.07420560e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   1.97001319e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   1.05092461e+00,  -1.05326026e-01,\n",
       "         -3.84855475e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   1.80634767e-01,\n",
       "         -7.88635808e-01,   0.00000000e+00,   3.22315578e-01,\n",
       "          0.00000000e+00,  -3.12463256e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          2.00943303e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,  -2.08894368e-01,\n",
       "         -2.73023317e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   6.96268422e-01,\n",
       "          0.00000000e+00,  -3.90177668e-01,   1.43670213e-02,\n",
       "          0.00000000e+00,  -3.39449917e-01,   1.35084239e+00,\n",
       "          0.00000000e+00,   5.18114115e-02,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   1.76502127e+00,\n",
       "          0.00000000e+00,  -9.79330820e-02,   0.00000000e+00,\n",
       "         -1.82791286e-01,  -3.59132200e-02,  -6.46720659e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "         -6.54123287e-02,   8.62254447e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,  -3.10105277e-01,\n",
       "          1.49716116e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "         -5.00179613e-02,   0.00000000e+00,   0.00000000e+00,\n",
       "          1.28314024e+00,  -2.06049080e+00,  -1.18909724e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   5.49227756e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,  -1.47779947e-02,\n",
       "          0.00000000e+00,   0.00000000e+00,   9.85629845e-01,\n",
       "          0.00000000e+00,   5.28646167e-01,   3.89424328e-01,\n",
       "          0.00000000e+00,  -3.57770242e-01,  -1.15560088e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          2.56359772e-01,   6.98213923e-02,   0.00000000e+00,\n",
       "          0.00000000e+00,  -1.37040557e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "         -3.77218896e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          8.33129859e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,  -5.30445875e-01,\n",
       "          0.00000000e+00,   8.27810055e-02,   0.00000000e+00,\n",
       "         -1.12040785e-01,   0.00000000e+00],\n",
       "       [ -4.02441705e-01,   0.00000000e+00,   1.55191969e-03,\n",
       "         -7.46792663e-03,   1.95362524e-04,  -1.72067681e-03,\n",
       "         -7.97796390e-05,  -4.78720551e-01,  -8.98830937e-02,\n",
       "          1.50009869e-04,  -4.96075802e-02,   6.35536154e-03,\n",
       "          0.00000000e+00,  -2.98774383e-03,   4.34785844e-02,\n",
       "          9.88894608e-02,  -4.80304807e-02,  -4.27305686e-02,\n",
       "          8.98573107e-02,   2.06366020e-02,  -5.67348715e-02,\n",
       "         -4.65368451e-02,   8.19798069e-02,   9.96330339e-02,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,  -1.92722972e-02,   0.00000000e+00,\n",
       "          0.00000000e+00,   7.33192748e-01,   0.00000000e+00,\n",
       "         -3.50065638e-02,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,  -1.49922161e-01,   0.00000000e+00,\n",
       "          6.99031893e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,  -2.55254651e-01,   0.00000000e+00,\n",
       "          1.07931683e+00,   5.02397079e-03,   0.00000000e+00,\n",
       "          1.62260117e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   1.12003522e+00,  -8.33144353e-02,\n",
       "         -1.47766422e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,  -2.52888870e-01,   0.00000000e+00,\n",
       "          3.21104840e-01,   0.00000000e+00,   1.64454139e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,  -4.82522459e-02,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   2.55171078e-01,   1.37720586e-01,\n",
       "         -3.20950595e-02,  -4.10088411e-02,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "         -2.32843411e-01,   2.83551847e-02,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          3.86878353e-01,   1.59879323e-01,   0.00000000e+00,\n",
       "         -2.20450863e-02,   0.00000000e+00,   4.22602000e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,   6.32386869e-02,\n",
       "          0.00000000e+00,   1.00209007e+00,  -3.04462008e-01,\n",
       "          6.86162821e-02,   4.91825540e-01,  -5.79489328e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   2.71742807e-01,\n",
       "         -1.68957681e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,  -2.08411691e-01,\n",
       "          0.00000000e+00,   1.88287527e+00,   0.00000000e+00,\n",
       "          1.61869905e-01,   0.00000000e+00,   2.51424868e-02,\n",
       "          0.00000000e+00,  -8.66626825e-01,  -1.68267349e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          1.45123063e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   1.02161079e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "         -1.05221969e-02,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "         -6.45140715e-01,  -2.22192345e-01,  -8.19074810e-01,\n",
       "          0.00000000e+00,  -2.16959424e-01,  -7.95841910e-03,\n",
       "          0.00000000e+00,   1.85630453e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,  -5.15696909e-01,   0.00000000e+00,\n",
       "         -1.24764121e-01,  -8.65646643e-01,   4.60551546e-01,\n",
       "         -3.89507023e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          1.83183894e-01,   3.73122992e-02,   0.00000000e+00,\n",
       "         -7.55170580e-01,   0.00000000e+00,   1.57707902e-02,\n",
       "          0.00000000e+00,   0.00000000e+00,  -1.76911841e-01,\n",
       "          0.00000000e+00,   2.83483304e-02,   0.00000000e+00,\n",
       "          5.59153158e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          2.35879555e-02,  -1.05995152e+00,   1.72714249e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,   2.73447495e-01,\n",
       "         -8.74023702e-01,   0.00000000e+00,   9.95080009e-03,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          1.72463014e-01,  -2.31020239e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,  -9.74707421e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,   5.54297564e-01,   0.00000000e+00,\n",
       "          1.68441616e-01,   1.68122477e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   6.91835636e-02,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,  -3.72829864e-02,\n",
       "          0.00000000e+00,  -1.55293088e+00,   2.32349077e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,  -5.60668005e-01,\n",
       "          0.00000000e+00,   3.49530364e-02,  -4.97635514e-01,\n",
       "          0.00000000e+00,   0.00000000e+00],\n",
       "       [  1.54760897e-01,  -8.71629151e-02,  -7.68081712e-04,\n",
       "         -2.51679800e-04,   2.01214991e-04,   5.70609455e-04,\n",
       "          3.94234170e-04,   1.34696030e-01,  -1.39176601e-02,\n",
       "         -8.68694619e-05,  -6.29169914e-03,   4.03653144e-05,\n",
       "         -1.67567877e-02,  -1.64079322e-05,  -7.92507504e-02,\n",
       "         -8.70339569e-03,  -2.59809482e-03,  -9.35624981e-02,\n",
       "         -3.45220614e-02,   1.43047496e-02,   2.25548573e-01,\n",
       "         -5.02343258e-02,  -3.58858696e-02,  -6.32468393e-02,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          1.61825453e-01,   0.00000000e+00,   1.58114743e-01,\n",
       "         -5.63888204e-01,   6.30598969e-01,  -4.49156611e-02,\n",
       "          0.00000000e+00,   0.00000000e+00,  -1.06045880e-01,\n",
       "          9.29002007e-01,   0.00000000e+00,  -1.08327856e-01,\n",
       "          0.00000000e+00,   2.57387838e-02,   0.00000000e+00,\n",
       "         -5.61371379e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "         -3.16011184e-07,  -1.21810387e-01,   0.00000000e+00,\n",
       "          1.35253442e-02,   0.00000000e+00,   0.00000000e+00,\n",
       "          1.63335088e-01,  -1.39796451e+00,  -4.71257689e-04,\n",
       "          1.08283971e-01,   5.45452854e-02,   3.16653631e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,  -6.30682547e-02,\n",
       "          1.41891943e-01,   0.00000000e+00,  -7.56099903e-01,\n",
       "         -4.24835659e-01,   0.00000000e+00,   7.02402337e-02,\n",
       "         -2.43840761e-01,   0.00000000e+00,   3.49441348e-01,\n",
       "         -2.57602946e-02,  -1.26768664e-02,   0.00000000e+00,\n",
       "          0.00000000e+00,  -1.87630484e-01,  -5.83442299e-02,\n",
       "         -6.08634481e-02,   2.74128243e-01,   6.61375453e-01,\n",
       "          2.48021438e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,   1.44477190e-02,   0.00000000e+00,\n",
       "         -2.40028889e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "         -5.18707889e-01,  -1.59366888e-03,   6.07143936e-02,\n",
       "          3.56643448e-01,   1.45669901e-01,  -8.79040764e-02,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,  -1.28831391e+00,   6.02615349e-01,\n",
       "         -3.20543200e-02,  -3.60751161e-01,   4.88924969e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,  -3.63494554e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,   1.09228450e-01,\n",
       "          5.08032030e-01,   1.00518985e-01,  -3.29883304e-02,\n",
       "          0.00000000e+00,   3.18291063e-01,   6.64021943e-01,\n",
       "          0.00000000e+00,  -9.82605647e-01,  -5.12585707e-01,\n",
       "         -1.41221859e-02,   0.00000000e+00,  -3.48523762e-01,\n",
       "         -4.64107779e-02,   1.13894367e+00,   2.85337707e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "         -2.41197538e-01,   0.00000000e+00,   2.44505687e-01,\n",
       "          0.00000000e+00,  -1.77658846e+00,   0.00000000e+00,\n",
       "          8.28056345e-01,   0.00000000e+00,   0.00000000e+00,\n",
       "          3.11472391e-01,   0.00000000e+00,  -9.85529273e-02,\n",
       "          0.00000000e+00,  -1.83974985e-01,  -4.63252767e-01,\n",
       "          4.32842818e-01,  -2.42979076e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,  -3.34270967e-01,   9.25518243e-02,\n",
       "          0.00000000e+00,  -5.96911579e-01,  -1.03379148e+00,\n",
       "          0.00000000e+00,   5.87899358e-02,   0.00000000e+00,\n",
       "          1.87535025e-01,   9.05658860e-01,  -1.36742188e-01,\n",
       "          4.13733264e-01,   0.00000000e+00,  -1.69232299e-01,\n",
       "         -4.20584343e-01,  -3.39436473e-01,   0.00000000e+00,\n",
       "          1.13573142e+00,   0.00000000e+00,  -4.41375167e-02,\n",
       "          0.00000000e+00,   0.00000000e+00,   7.85511416e-02,\n",
       "         -8.95149428e-01,  -8.53460308e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "         -1.90936502e-01,   1.51038316e+00,   2.65971033e-01,\n",
       "         -6.24195442e-02,   0.00000000e+00,   1.30901039e-01,\n",
       "          1.68723735e-01,   6.58217320e-02,   0.00000000e+00,\n",
       "          0.00000000e+00,  -3.48855416e-02,  -3.64381124e-01,\n",
       "          0.00000000e+00,   0.00000000e+00,  -7.49116612e-01,\n",
       "          7.52418891e-01,   5.66563159e-01,   0.00000000e+00,\n",
       "         -2.83314603e-01,  -8.60296832e-02,   0.00000000e+00,\n",
       "         -1.18430771e+00,  -2.27006995e-01,   0.00000000e+00,\n",
       "          0.00000000e+00,   0.00000000e+00,   0.00000000e+00,\n",
       "          1.74858128e-01,   2.54425766e-01,   0.00000000e+00,\n",
       "          7.18526801e-01,  -1.19845774e-02,   4.24189681e-01,\n",
       "          0.00000000e+00,   1.57655031e+00,   0.00000000e+00,\n",
       "          0.00000000e+00,  -8.73919028e-03,   3.27335737e-01,\n",
       "          4.06607048e-01,  -2.22027764e-01,   1.69746773e-02,\n",
       "          0.00000000e+00,   0.00000000e+00]])"
      ]
     },
     "execution_count": 264,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lrcv_L1.coef_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# L2正则"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 265,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "LogisticRegressionCV(Cs=[1, 10, 100, 1000], class_weight=None, cv=5,\n",
       "           dual=False, fit_intercept=True, intercept_scaling=1.0,\n",
       "           max_iter=100, multi_class='ovr', n_jobs=1, penalty='l2',\n",
       "           random_state=None, refit=True, scoring='neg_log_loss',\n",
       "           solver='liblinear', tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 265,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegressionCV\n",
    "\n",
    "Cs = [1, 10,100,1000]\n",
    "\n",
    "#一对多\n",
    "lr_cv_L2 = LogisticRegressionCV(Cs=Cs, cv = 5, scoring='neg_log_loss', penalty='l2', solver='liblinear', multi_class='ovr')\n",
    "lr_cv_L2.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 267,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{0: array([[-0.22731871, -0.2270187 , -0.22699524, -0.22687904],\n",
       "        [-0.22063985, -0.21481716, -0.21690925, -0.21395388],\n",
       "        [-0.22845551, -0.22937029, -0.22633056, -0.22823439],\n",
       "        [-0.23045482, -0.23017614, -0.22977259, -0.23461147],\n",
       "        [-0.24203527, -0.24150078, -0.23754266, -0.24212777]]),\n",
       " 1: array([[-0.49092006, -0.48877615, -0.48871919, -0.48849265],\n",
       "        [-0.50003647, -0.49893249, -0.49890046, -0.50084732],\n",
       "        [-0.49364839, -0.49424877, -0.493403  , -0.49402135],\n",
       "        [-0.49277894, -0.49532142, -0.49397742, -0.49533184],\n",
       "        [-0.48921363, -0.48357016, -0.48791165, -0.49027191]]),\n",
       " 2: array([[-0.51460907, -0.52035383, -0.52274273, -0.51591096],\n",
       "        [-0.52206925, -0.5237847 , -0.52276997, -0.52188531],\n",
       "        [-0.51222757, -0.514996  , -0.51504851, -0.51788539],\n",
       "        [-0.52348813, -0.52735983, -0.51841846, -0.52261553],\n",
       "        [-0.522996  , -0.51356463, -0.51992273, -0.52683573]])}"
      ]
     },
     "execution_count": 267,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_cv_L2.scores_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 269,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb5259588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_Cs = len(Cs)\n",
    "n_classes = 3\n",
    "scores =  np.zeros((n_classes,n_Cs))\n",
    "\n",
    "for j in range(n_classes):\n",
    "        scores[j][:] = np.mean(lr_cv_L2.scores_[j],axis = 0)\n",
    "    \n",
    "mse_mean = -np.mean(scores, axis = 0)\n",
    "plt.plot(np.log10(Cs), mse_mean.reshape(n_Cs,1)) \n",
    "plt.xlabel('log(C)')\n",
    "plt.ylabel('neg-logloss')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 选择L1正则的LogisticRegressionCV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\linear_model\\base.py:340: RuntimeWarning: overflow encountered in exp\n",
      "  np.exp(prob, prob)\n"
     ]
    }
   ],
   "source": [
    "lrcv_L1 = LogisticRegressionCV(Cs=100,cv=5,scoring='neg_log_loss',penalty='l1',solver='liblinear',multi_class='ovr')\n",
    "lrcv_L1.fit(X_train,y_train)\n",
    "y_pred_lrcvL1 = lrcv_L1.predict(X_test)\n",
    "submission = pd.DataFrame({\n",
    "               \"InterestLevel\": y_pred_lrcvL1\n",
    "    })\n",
    "submission.InterestLevel = np.exp(submission.InterestLevel)\n",
    "submission.to_csv('./data/FE_RentListingInqueriesLRCV.csv', index=False)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用SVM"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 训练模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 270,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda2\\envs\\py3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:2026: FutureWarning: From version 0.21, test_size will always complement train_size unless both are specified.\n",
      "  FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train_part, X_val, y_train_part, y_val = train_test_split(X_train, y_train, train_size = 0.8,random_state = 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用默认的SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 271,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import LinearSVC\n",
    "\n",
    "SVC1 = LinearSVC().fit(X_train_part, y_train_part)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 276,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Classification report for classifier LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,\n",
      "     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n",
      "     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n",
      "     verbose=0):\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.25      0.03      0.05       170\n",
      "          1       0.32      0.67      0.43       466\n",
      "          2       0.82      0.60      0.69      1364\n",
      "\n",
      "avg / total       0.65      0.57      0.58      2000\n",
      "\n",
      "\n",
      "Confusion matrix:\n",
      "[[  5 135  30]\n",
      " [  6 312 148]\n",
      " [  9 540 815]]\n"
     ]
    }
   ],
   "source": [
    "import sklearn.metrics as metrics\n",
    "\n",
    "y_predict = SVC1.predict(X_val)\n",
    "\n",
    "print(\"Classification report for classifier %s:\\n%s\\n\"% (SVC1, metrics.classification_report(y_val, y_predict)))\n",
    "print(\"Confusion matrix:\\n%s\" % metrics.confusion_matrix(y_val, y_predict))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 277,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_grid_point_Linear(C, X_train, y_train, X_val, y_val):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC2 =  LinearSVC( C = C)\n",
    "    SVC2 = SVC2.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC2.score(X_val, y_val)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 278,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.338\n",
      "accuracy: 0.086\n",
      "accuracy: 0.659\n",
      "accuracy: 0.3535\n",
      "accuracy: 0.6845\n",
      "accuracy: 0.6815\n",
      "accuracy: 0.608\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb52319e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-3, 3, 7)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份  \n",
    "#penalty_s = ['l1','l2']\n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "#    for j, penalty in enumerate(penalty_s):\n",
    "    tmp = fit_grid_point_Linear(oneC, X_train, y_train, X_val, y_val)\n",
    "    accuracy_s.append(tmp)\n",
    "\n",
    "x_axis = np.log10(C_s)\n",
    "#for j, penalty in enumerate(penalty_s):\n",
    "plt.plot(x_axis, np.array(accuracy_s), 'b-')\n",
    "    \n",
    "plt.legend()\n",
    "plt.xlabel( 'log(C)' )                                                                                                      \n",
    "plt.ylabel( 'accuracy' )\n",
    "plt.savefig('SVM_Otto.png' )\n",
    "\n",
    "plt.show()\n",
    "  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# RBF核SVM正则参数调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC\n",
    "def fit_grid_point_RBF(C, gamma, X_train, y_train, X_val, y_val):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC3 =  SVC( C = C, kernel='rbf', gamma = gamma)\n",
    "    SVC3 = SVC3.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC3.score(X_val, y_val)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 281,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.682\n",
      "accuracy: 0.682\n",
      "accuracy: 0.682\n",
      "accuracy: 0.682\n",
      "accuracy: 0.9785\n",
      "accuracy: 0.9975\n",
      "accuracy: 0.9985\n",
      "accuracy: 0.9985\n",
      "accuracy: 0.998\n",
      "accuracy: 0.9985\n",
      "accuracy: 0.9985\n",
      "accuracy: 0.999\n",
      "accuracy: 0.9985\n",
      "accuracy: 0.9985\n",
      "accuracy: 0.999\n",
      "accuracy: 0.999\n"
     ]
    }
   ],
   "source": [
    "C_s = np.logspace(-1, 2, 4)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-1, 2, 4)  \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train, y_train, X_val, y_val)\n",
    "        accuracy_s.append(tmp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 283,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb52423c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "accuracy_s1 =np.array(accuracy_s).reshape(len(C_s),len(gamma_s))\n",
    "x_axis = np.log10(C_s)\n",
    "for j, gamma in enumerate(gamma_s):\n",
    "    plt.plot(x_axis, np.array(accuracy_s1[:,j]), label = ' Test - log(gamma)' + str(np.log10(gamma)))\n",
    "\n",
    "plt.legend()\n",
    "plt.xlabel( 'log(C)' )                                                                                                      \n",
    "plt.ylabel( 'accuracy' )\n",
    "plt.savefig('RBF_SVM_Otto.png' )\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 选择基于RBF的SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 285,
   "metadata": {},
   "outputs": [],
   "source": [
    "#根据上图显示 C参数选1，gamma选100\n",
    "SVC3 =  SVC( C = 1, kernel='rbf', gamma = 100)\n",
    "SVC3 = SVC3.fit(X_train, y_train)\n",
    "y_pred_rforest2 = SVC3.predict(X_val)\n",
    "submission = pd.DataFrame({\n",
    "               \"InterestLevel\": y_pred_rforest2\n",
    "    })\n",
    "submission.InterestLevel = np.exp(submission.InterestLevel)\n",
    "submission.to_csv('./data/FE_RentListingInqueriesSVM.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
